<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>NVTX C++ API Reference: nvtx3.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr id="projectrow">
  <td id="projectalign">
   <div id="projectname">NVTX C++ API Reference<span id="projectnumber">&#160;1.0</span>
   </div>
   <div id="projectbrief">C++ convenience wrappers for NVTX v3 C API</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function() { init_codefold(0); });
/* @license-end */
</script>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_48b95086e7eb28d79ef283b47c5fa0c6.html">nvtx3</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="headertitle"><div class="title">nvtx3.hpp</div></div>
</div><!--header-->
<div class="contents">
<a href="nvtx3_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span><span class="comment">/*</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno">    2</span><span class="comment"> * SPDX-FileCopyrightText: Copyright (c) 2020-2025 NVIDIA CORPORATION &amp; AFFILIATES. All rights reserved.</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno">    3</span><span class="comment"> * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno">    4</span><span class="comment"> *</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno">    5</span><span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno">    6</span><span class="comment"> * you may not use this file except in compliance with the License.</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno">    7</span><span class="comment"> * You may obtain a copy of the License at</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno">    8</span><span class="comment"> *</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno">    9</span><span class="comment"> *     http://www.apache.org/licenses/LICENSE-2.0</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno">   10</span><span class="comment"> *</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno">   11</span><span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno">   12</span><span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno">   13</span><span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno">   14</span><span class="comment"> * See the License for the specific language governing permissions and</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno">   15</span><span class="comment"> * limitations under the License.</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno">   16</span><span class="comment"> *</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno">   17</span><span class="comment"> * Licensed under the Apache License v2.0 with LLVM Exceptions.</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno">   18</span><span class="comment"> * See https://nvidia.github.io/NVTX/LICENSE.txt for license information.</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno">   19</span><span class="comment"> */</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno">   20</span> </div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno">   21</span><span class="preprocessor">#if defined(NVTX_AS_SYSTEM_HEADER)</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno">   22</span><span class="preprocessor">#if defined(__clang__)</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno">   23</span><span class="preprocessor">#pragma clang system_header</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno">   24</span><span class="preprocessor">#elif defined(__GNUC__) || defined(__NVCOMPILER)</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno">   25</span><span class="preprocessor">#pragma GCC system_header</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno">   26</span><span class="preprocessor">#elif defined(_MSC_VER)</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno">   27</span><span class="preprocessor">#pragma system_header</span></div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno">   28</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno">   29</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno">   30</span> </div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno">   31</span><span class="comment">/* Temporary helper #defines, #undef&#39;ed at end of header */</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno">   32</span><span class="preprocessor">#define NVTX3_CPP_VERSION_MAJOR 1</span></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno">   33</span><span class="preprocessor">#define NVTX3_CPP_VERSION_MINOR 0</span></div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno">   34</span> </div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno">   35</span><span class="comment">/* This section handles the decision of whether to provide unversioned symbols.</span></div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno">   36</span><span class="comment"> * If NVTX3_CPP_REQUIRE_EXPLICIT_VERSION is #defined, unversioned symbols are</span></div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno">   37</span><span class="comment"> * not provided, and explicit-version symbols such as nvtx3::v1::scoped_range</span></div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno">   38</span><span class="comment"> * and NVTX3_V1_FUNC_RANGE must be used.  By default, the first #include of this</span></div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno">   39</span><span class="comment"> * header will define the unversioned symbols such as nvtx3::scoped_range and</span></div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno">   40</span><span class="comment"> * NVTX3_FUNC_RANGE.  Subsequently including a different major version of this</span></div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno">   41</span><span class="comment"> * header without #defining NVTX3_CPP_REQUIRE_EXPLICIT_VERSION triggers an error</span></div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno">   42</span><span class="comment"> * since the symbols would conflict.  Subsequently including of a different</span></div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno">   43</span><span class="comment"> * minor version within the same major version is allowed. Functionality of</span></div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno">   44</span><span class="comment"> * minor versions is cumulative, regardless of include order.</span></div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno">   45</span><span class="comment"> *</span></div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno">   46</span><span class="comment"> * Since NVTX3_CPP_REQUIRE_EXPLICIT_VERSION allows all combinations of versions</span></div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno">   47</span><span class="comment"> * to coexist without problems within a translation unit, the recommended best</span></div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno">   48</span><span class="comment"> * practice for instrumenting header-based libraries with NVTX C++ Wrappers is</span></div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno">   49</span><span class="comment"> * is to #define NVTX3_CPP_REQUIRE_EXPLICIT_VERSION before including nvtx3.hpp,</span></div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno">   50</span><span class="comment"> * #undef it afterward, and only use explicit-version symbols.  This is not</span></div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno">   51</span><span class="comment"> * necessary in common cases, such as instrumenting a standalone application, or</span></div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno">   52</span><span class="comment"> * static/shared libraries in .cpp files or headers private to those projects.</span></div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno">   53</span><span class="comment"> */</span></div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno">   54</span><span class="comment">/* clang-format off */</span></div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno">   55</span><span class="preprocessor">#if !defined(NVTX3_CPP_REQUIRE_EXPLICIT_VERSION)</span></div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno">   56</span>  <span class="comment">/* Define macro used by all definitions in this header to indicate the</span></div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno">   57</span><span class="comment">   * unversioned symbols should be defined in addition to the versioned ones.</span></div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno">   58</span><span class="comment">   */</span></div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno">   59</span><span class="preprocessor">  #define NVTX3_INLINE_THIS_VERSION</span></div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno">   60</span> </div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno">   61</span><span class="preprocessor">  #if !defined(NVTX3_CPP_INLINED_VERSION_MAJOR)</span></div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno">   62</span>    <span class="comment">/* First occurrence of this header in the translation unit.  Define macros</span></div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno">   63</span><span class="comment">     * indicating which version shall be used for unversioned symbols.</span></div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno">   64</span><span class="comment">     */</span></div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno">   65</span> </div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#ac2d95bad5f74d08ca6660da2a92a4463">   76</a></span><span class="preprocessor">    #define NVTX3_CPP_INLINED_VERSION_MAJOR 1  </span><span class="comment">// NVTX3_CPP_VERSION_MAJOR</span></div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno">   77</span> </div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#abb380e5bd6d9e68f116ad5fd2758f861">   88</a></span><span class="preprocessor">    #define NVTX3_CPP_INLINED_VERSION_MINOR 0  </span><span class="comment">// NVTX3_CPP_VERSION_MINOR</span></div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno">   89</span><span class="preprocessor">  #elif NVTX3_CPP_INLINED_VERSION_MAJOR != NVTX3_CPP_VERSION_MAJOR</span></div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno">   90</span>    <span class="comment">/* Unsupported case -- cannot define unversioned symbols for different major versions</span></div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno">   91</span><span class="comment">     * in the same translation unit.</span></div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno">   92</span><span class="comment">     */</span></div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno">   93</span><span class="preprocessor">    #error \</span></div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno">   94</span><span class="preprocessor">      &quot;Two different major versions of the NVTX C++ Wrappers are being included in a single .cpp file, with unversioned symbols enabled in both.  Only one major version can enable unversioned symbols in a .cpp file.  To disable unversioned symbols, #define NVTX3_CPP_REQUIRE_EXPLICIT_VERSION before #including nvtx3.hpp, and use the explicit-version symbols instead -- this is the preferred way to use nvtx3.hpp from a header file.&quot;</span></div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno">   95</span><span class="preprocessor">  #elif (NVTX3_CPP_INLINED_VERSION_MAJOR == NVTX3_CPP_VERSION_MAJOR) &amp;&amp; \</span></div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno">   96</span><span class="preprocessor">    (NVTX3_CPP_INLINED_VERSION_MINOR &lt; NVTX3_CPP_VERSION_MINOR)</span></div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno">   97</span>    <span class="comment">/* An older minor version of the same major version already defined unversioned</span></div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno">   98</span><span class="comment">     * symbols.  The new features provided in this header will be inlined</span></div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno">   99</span><span class="comment">     * redefine the minor version macro to this header&#39;s version.</span></div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno">  100</span><span class="comment">     */</span></div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno">  101</span><span class="preprocessor">    #undef NVTX3_CPP_INLINED_VERSION_MINOR</span></div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno">  102</span><span class="preprocessor">    #define NVTX3_CPP_INLINED_VERSION_MINOR 0  </span><span class="comment">// NVTX3_CPP_VERSION_MINOR</span></div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno">  103</span>    <span class="comment">// else, already have this version or newer, nothing to do</span></div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno">  104</span><span class="preprocessor">  #endif</span></div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno">  105</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno">  106</span><span class="comment">/* clang-format on */</span></div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno">  107</span> </div>
<div class="line"><a id="l00576" name="l00576"></a><span class="lineno">  576</span><span class="comment">/* Temporary helper #defines, removed with #undef at end of header */</span></div>
<div class="line"><a id="l00577" name="l00577"></a><span class="lineno">  577</span> </div>
<div class="line"><a id="l00578" name="l00578"></a><span class="lineno">  578</span><span class="comment">/* Some compilers do not correctly support SFINAE, which is used in this API</span></div>
<div class="line"><a id="l00579" name="l00579"></a><span class="lineno">  579</span><span class="comment"> * to detect common usage errors and provide clearer error messages (by using</span></div>
<div class="line"><a id="l00580" name="l00580"></a><span class="lineno">  580</span><span class="comment"> * static_assert) than the compiler would produce otherwise.  These compilers</span></div>
<div class="line"><a id="l00581" name="l00581"></a><span class="lineno">  581</span><span class="comment"> * will generate errors while compiling this file such as:</span></div>
<div class="line"><a id="l00582" name="l00582"></a><span class="lineno">  582</span><span class="comment"> *</span></div>
<div class="line"><a id="l00583" name="l00583"></a><span class="lineno">  583</span><span class="comment"> *  error: &#39;name&#39; is not a member of &#39;nvtx3::v1::domain::global&#39;</span></div>
<div class="line"><a id="l00584" name="l00584"></a><span class="lineno">  584</span><span class="comment"> *</span></div>
<div class="line"><a id="l00585" name="l00585"></a><span class="lineno">  585</span><span class="comment"> * The following compiler versions are known to have this problem, and so are</span></div>
<div class="line"><a id="l00586" name="l00586"></a><span class="lineno">  586</span><span class="comment"> * set by default to disable the SFINAE-based checks:</span></div>
<div class="line"><a id="l00587" name="l00587"></a><span class="lineno">  587</span><span class="comment"> *</span></div>
<div class="line"><a id="l00588" name="l00588"></a><span class="lineno">  588</span><span class="comment"> * - All MSVC versions prior to VS2017 Update 7 (15.7)</span></div>
<div class="line"><a id="l00589" name="l00589"></a><span class="lineno">  589</span><span class="comment"> * - GCC 8.1-8.3 (the problem was fixed in GCC 8.4)</span></div>
<div class="line"><a id="l00590" name="l00590"></a><span class="lineno">  590</span><span class="comment"> *</span></div>
<div class="line"><a id="l00591" name="l00591"></a><span class="lineno">  591</span><span class="comment"> * If you find your compiler hits this problem, you can work around it by</span></div>
<div class="line"><a id="l00592" name="l00592"></a><span class="lineno">  592</span><span class="comment"> * defining NVTX3_USE_CHECKED_OVERLOADS_FOR_GET to 0 before including this</span></div>
<div class="line"><a id="l00593" name="l00593"></a><span class="lineno">  593</span><span class="comment"> * header, or you can add a check for your compiler version to this #if.</span></div>
<div class="line"><a id="l00594" name="l00594"></a><span class="lineno">  594</span><span class="comment"> * Also, please report the issue on the NVTX GitHub page.</span></div>
<div class="line"><a id="l00595" name="l00595"></a><span class="lineno">  595</span><span class="comment"> */</span></div>
<div class="line"><a id="l00596" name="l00596"></a><span class="lineno">  596</span><span class="preprocessor">#if !defined(NVTX3_USE_CHECKED_OVERLOADS_FOR_GET)</span></div>
<div class="line"><a id="l00597" name="l00597"></a><span class="lineno">  597</span><span class="preprocessor">#if defined(_MSC_VER) &amp;&amp; _MSC_VER &lt; 1914 \</span></div>
<div class="line"><a id="l00598" name="l00598"></a><span class="lineno">  598</span><span class="preprocessor">  || defined(__GNUC__) &amp;&amp; __GNUC__ == 8 &amp;&amp; __GNUC_MINOR__ &lt; 4</span></div>
<div class="line"><a id="l00599" name="l00599"></a><span class="lineno">  599</span><span class="preprocessor">#define NVTX3_USE_CHECKED_OVERLOADS_FOR_GET 0</span></div>
<div class="line"><a id="l00600" name="l00600"></a><span class="lineno">  600</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l00601" name="l00601"></a><span class="lineno">  601</span><span class="preprocessor">#define NVTX3_USE_CHECKED_OVERLOADS_FOR_GET 1</span></div>
<div class="line"><a id="l00602" name="l00602"></a><span class="lineno">  602</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00603" name="l00603"></a><span class="lineno">  603</span><span class="preprocessor">#define NVTX3_USE_CHECKED_OVERLOADS_FOR_GET_DEFINED_HERE</span></div>
<div class="line"><a id="l00604" name="l00604"></a><span class="lineno">  604</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00605" name="l00605"></a><span class="lineno">  605</span> </div>
<div class="line"><a id="l00606" name="l00606"></a><span class="lineno">  606</span><span class="comment">/* Within this header, nvtx3::NVTX3_VERSION_NAMESPACE resolves to nvtx3::vX,</span></div>
<div class="line"><a id="l00607" name="l00607"></a><span class="lineno">  607</span><span class="comment"> * where &quot;X&quot; is the major version number. */</span></div>
<div class="line"><a id="l00608" name="l00608"></a><span class="lineno">  608</span><span class="preprocessor">#define NVTX3_CONCAT(A, B) A##B</span></div>
<div class="line"><a id="l00609" name="l00609"></a><span class="lineno">  609</span><span class="preprocessor">#define NVTX3_NAMESPACE_FOR(VERSION) NVTX3_CONCAT(v, VERSION)</span></div>
<div class="line"><a id="l00610" name="l00610"></a><span class="lineno">  610</span><span class="preprocessor">#define NVTX3_VERSION_NAMESPACE NVTX3_NAMESPACE_FOR(NVTX3_CPP_VERSION_MAJOR)</span></div>
<div class="line"><a id="l00611" name="l00611"></a><span class="lineno">  611</span> </div>
<div class="line"><a id="l00612" name="l00612"></a><span class="lineno">  612</span><span class="comment">/* Avoid duplicating #if defined(NVTX3_INLINE_THIS_VERSION) for namespaces</span></div>
<div class="line"><a id="l00613" name="l00613"></a><span class="lineno">  613</span><span class="comment"> * in each minor version by making a macro to use unconditionally, which</span></div>
<div class="line"><a id="l00614" name="l00614"></a><span class="lineno">  614</span><span class="comment"> * resolves to &quot;inline&quot; or nothing as appropriate. */</span></div>
<div class="line"><a id="l00615" name="l00615"></a><span class="lineno">  615</span><span class="preprocessor">#if defined(NVTX3_INLINE_THIS_VERSION)</span></div>
<div class="line"><a id="l00616" name="l00616"></a><span class="lineno">  616</span><span class="preprocessor">#define NVTX3_INLINE_IF_REQUESTED inline</span></div>
<div class="line"><a id="l00617" name="l00617"></a><span class="lineno">  617</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l00618" name="l00618"></a><span class="lineno">  618</span><span class="preprocessor">#define NVTX3_INLINE_IF_REQUESTED</span></div>
<div class="line"><a id="l00619" name="l00619"></a><span class="lineno">  619</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00620" name="l00620"></a><span class="lineno">  620</span> </div>
<div class="line"><a id="l00621" name="l00621"></a><span class="lineno">  621</span><span class="comment">/* Enables the use of constexpr when support for C++14 constexpr is present.</span></div>
<div class="line"><a id="l00622" name="l00622"></a><span class="lineno">  622</span><span class="comment"> *</span></div>
<div class="line"><a id="l00623" name="l00623"></a><span class="lineno">  623</span><span class="comment"> * Initialization of a class member that is a union to a specific union member</span></div>
<div class="line"><a id="l00624" name="l00624"></a><span class="lineno">  624</span><span class="comment"> * can only be done in the body of a constructor, not in a member initializer</span></div>
<div class="line"><a id="l00625" name="l00625"></a><span class="lineno">  625</span><span class="comment"> * list.  A constexpr constructor must have an empty body until C++14, so there</span></div>
<div class="line"><a id="l00626" name="l00626"></a><span class="lineno">  626</span><span class="comment"> * is no way to make an initializer of a member union constexpr in C++11.  This</span></div>
<div class="line"><a id="l00627" name="l00627"></a><span class="lineno">  627</span><span class="comment"> * macro allows making functions constexpr in C++14 or newer, but non-constexpr</span></div>
<div class="line"><a id="l00628" name="l00628"></a><span class="lineno">  628</span><span class="comment"> * in C++11 compilation.  It is used here on constructors that initialize their</span></div>
<div class="line"><a id="l00629" name="l00629"></a><span class="lineno">  629</span><span class="comment"> * member unions.</span></div>
<div class="line"><a id="l00630" name="l00630"></a><span class="lineno">  630</span><span class="comment"> */</span></div>
<div class="line"><a id="l00631" name="l00631"></a><span class="lineno">  631</span><span class="preprocessor">#if __cpp_constexpr &gt;= 201304L</span></div>
<div class="line"><a id="l00632" name="l00632"></a><span class="lineno">  632</span><span class="preprocessor">#define NVTX3_CONSTEXPR_IF_CPP14 constexpr</span></div>
<div class="line"><a id="l00633" name="l00633"></a><span class="lineno">  633</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l00634" name="l00634"></a><span class="lineno">  634</span><span class="preprocessor">#define NVTX3_CONSTEXPR_IF_CPP14</span></div>
<div class="line"><a id="l00635" name="l00635"></a><span class="lineno">  635</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00636" name="l00636"></a><span class="lineno">  636</span> </div>
<div class="line"><a id="l00637" name="l00637"></a><span class="lineno">  637</span><span class="comment">// Macro wrappers for C++ attributes</span></div>
<div class="line"><a id="l00638" name="l00638"></a><span class="lineno">  638</span><span class="preprocessor">#if !defined(__has_cpp_attribute)</span></div>
<div class="line"><a id="l00639" name="l00639"></a><span class="lineno">  639</span><span class="preprocessor">#define __has_cpp_attribute(x) 0</span></div>
<div class="line"><a id="l00640" name="l00640"></a><span class="lineno">  640</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00641" name="l00641"></a><span class="lineno">  641</span><span class="preprocessor">#if __has_cpp_attribute(maybe_unused)</span></div>
<div class="line"><a id="l00642" name="l00642"></a><span class="lineno">  642</span><span class="preprocessor">#define NVTX3_MAYBE_UNUSED [[maybe_unused]]</span></div>
<div class="line"><a id="l00643" name="l00643"></a><span class="lineno">  643</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l00644" name="l00644"></a><span class="lineno">  644</span><span class="preprocessor">#define NVTX3_MAYBE_UNUSED</span></div>
<div class="line"><a id="l00645" name="l00645"></a><span class="lineno">  645</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00646" name="l00646"></a><span class="lineno">  646</span><span class="preprocessor">#if __has_cpp_attribute(nodiscard)</span></div>
<div class="line"><a id="l00647" name="l00647"></a><span class="lineno">  647</span><span class="preprocessor">#define NVTX3_NO_DISCARD [[nodiscard]]</span></div>
<div class="line"><a id="l00648" name="l00648"></a><span class="lineno">  648</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l00649" name="l00649"></a><span class="lineno">  649</span><span class="preprocessor">#define NVTX3_NO_DISCARD</span></div>
<div class="line"><a id="l00650" name="l00650"></a><span class="lineno">  650</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00651" name="l00651"></a><span class="lineno">  651</span> </div>
<div class="line"><a id="l00652" name="l00652"></a><span class="lineno">  652</span> <span class="comment">/* Use a macro for static asserts, which defaults to static_assert, but that</span></div>
<div class="line"><a id="l00653" name="l00653"></a><span class="lineno">  653</span><span class="comment">  * testing tools can replace with a logging function.  For example:</span></div>
<div class="line"><a id="l00654" name="l00654"></a><span class="lineno">  654</span><span class="comment">  * #define NVTX3_STATIC_ASSERT(c, m) \</span></div>
<div class="line"><a id="l00655" name="l00655"></a><span class="lineno">  655</span><span class="comment">  *   do { if (!(c)) printf(&quot;static_assert would fail: %s\n&quot;, m); } while (0)</span></div>
<div class="line"><a id="l00656" name="l00656"></a><span class="lineno">  656</span><span class="comment">  */</span></div>
<div class="line"><a id="l00657" name="l00657"></a><span class="lineno">  657</span><span class="preprocessor">#if !defined(NVTX3_STATIC_ASSERT)</span></div>
<div class="line"><a id="l00658" name="l00658"></a><span class="lineno">  658</span><span class="preprocessor">#define NVTX3_STATIC_ASSERT(condition, message) static_assert(condition, message)</span></div>
<div class="line"><a id="l00659" name="l00659"></a><span class="lineno">  659</span><span class="preprocessor">#define NVTX3_STATIC_ASSERT_DEFINED_HERE</span></div>
<div class="line"><a id="l00660" name="l00660"></a><span class="lineno">  660</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00661" name="l00661"></a><span class="lineno">  661</span> </div>
<div class="line"><a id="l00662" name="l00662"></a><span class="lineno">  662</span><span class="comment">/* Implementation sections, enclosed in guard macros for each minor version */</span></div>
<div class="line"><a id="l00663" name="l00663"></a><span class="lineno">  663</span> </div>
<div class="line"><a id="l00664" name="l00664"></a><span class="lineno">  664</span><span class="preprocessor">#ifndef NVTX3_CPP_DEFINITIONS_V1_0</span></div>
<div class="line"><a id="l00665" name="l00665"></a><span class="lineno">  665</span><span class="preprocessor">#define NVTX3_CPP_DEFINITIONS_V1_0</span></div>
<div class="line"><a id="l00666" name="l00666"></a><span class="lineno">  666</span> </div>
<div class="line"><a id="l00667" name="l00667"></a><span class="lineno">  667</span><span class="preprocessor">#include &quot;nvToolsExt.h&quot;</span></div>
<div class="line"><a id="l00668" name="l00668"></a><span class="lineno">  668</span> </div>
<div class="line"><a id="l00669" name="l00669"></a><span class="lineno">  669</span><span class="preprocessor">#include &lt;memory&gt;</span></div>
<div class="line"><a id="l00670" name="l00670"></a><span class="lineno">  670</span><span class="preprocessor">#include &lt;string&gt;</span></div>
<div class="line"><a id="l00671" name="l00671"></a><span class="lineno">  671</span><span class="preprocessor">#include &lt;type_traits&gt;</span></div>
<div class="line"><a id="l00672" name="l00672"></a><span class="lineno">  672</span><span class="preprocessor">#include &lt;utility&gt;</span></div>
<div class="line"><a id="l00673" name="l00673"></a><span class="lineno">  673</span><span class="preprocessor">#include &lt;cstddef&gt;</span></div>
<div class="line"><a id="l00674" name="l00674"></a><span class="lineno">  674</span> </div>
<div class="line"><a id="l00675" name="l00675"></a><span class="lineno">  675</span><span class="keyword">namespace </span>nvtx3 {</div>
<div class="line"><a id="l00676" name="l00676"></a><span class="lineno">  676</span> </div>
<div class="line"><a id="l00677" name="l00677"></a><span class="lineno">  677</span>NVTX3_INLINE_IF_REQUESTED <span class="keyword">namespace </span>NVTX3_VERSION_NAMESPACE</div>
<div class="line"><a id="l00678" name="l00678"></a><span class="lineno">  678</span>{</div>
<div class="line"><a id="l00679" name="l00679"></a><span class="lineno">  679</span> </div>
<div class="line"><a id="l00680" name="l00680"></a><span class="lineno">  680</span><span class="keyword">namespace </span>detail {</div>
<div class="line"><a id="l00681" name="l00681"></a><span class="lineno">  681</span> </div>
<div class="line"><a id="l00682" name="l00682"></a><span class="lineno">  682</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> Unused&gt;</div>
<div class="line"><a id="l00683" name="l00683"></a><span class="lineno">  683</span><span class="keyword">struct </span>always_false : std::false_type {};</div>
<div class="line"><a id="l00684" name="l00684"></a><span class="lineno">  684</span> </div>
<div class="line"><a id="l00685" name="l00685"></a><span class="lineno">  685</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keywordtype">void</span>&gt;</div>
<div class="line"><a id="l00686" name="l00686"></a><span class="lineno">  686</span><span class="keyword">struct </span>has_name : std::false_type {};</div>
<div class="line"><a id="l00687" name="l00687"></a><span class="lineno">  687</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a id="l00688" name="l00688"></a><span class="lineno">  688</span><span class="keyword">struct </span>has_name&lt;T, decltype((void)T::name, void())&gt; : std::true_type {};</div>
<div class="line"><a id="l00689" name="l00689"></a><span class="lineno">  689</span> </div>
<div class="line"><a id="l00690" name="l00690"></a><span class="lineno">  690</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keywordtype">void</span>&gt;</div>
<div class="line"><a id="l00691" name="l00691"></a><span class="lineno">  691</span><span class="keyword">struct </span>has_id : std::false_type {};</div>
<div class="line"><a id="l00692" name="l00692"></a><span class="lineno">  692</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a id="l00693" name="l00693"></a><span class="lineno">  693</span><span class="keyword">struct </span>has_id&lt;T, decltype((void)T::id, void())&gt; : std::true_type {};</div>
<div class="line"><a id="l00694" name="l00694"></a><span class="lineno">  694</span> </div>
<div class="line"><a id="l00695" name="l00695"></a><span class="lineno">  695</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keywordtype">void</span>&gt;</div>
<div class="line"><a id="l00696" name="l00696"></a><span class="lineno">  696</span><span class="keyword">struct </span>has_message : std::false_type {};</div>
<div class="line"><a id="l00697" name="l00697"></a><span class="lineno">  697</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a id="l00698" name="l00698"></a><span class="lineno">  698</span><span class="keyword">struct </span>has_message&lt;T, decltype((void)T::message, void())&gt; : std::true_type {};</div>
<div class="line"><a id="l00699" name="l00699"></a><span class="lineno">  699</span> </div>
<div class="line"><a id="l00700" name="l00700"></a><span class="lineno">  700</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keywordtype">void</span>&gt;</div>
<div class="line"><a id="l00701" name="l00701"></a><span class="lineno">  701</span><span class="keyword">struct </span>is_c_string : std::false_type {};</div>
<div class="line"><a id="l00702" name="l00702"></a><span class="lineno">  702</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a id="l00703" name="l00703"></a><span class="lineno">  703</span><span class="keyword">struct </span>is_c_string&lt;T, typename std::enable_if&lt;</div>
<div class="line"><a id="l00704" name="l00704"></a><span class="lineno">  704</span>  std::is_convertible&lt;T, char const*   &gt;::value ||</div>
<div class="line"><a id="l00705" name="l00705"></a><span class="lineno">  705</span>  std::is_convertible&lt;T, wchar_t const*&gt;::value</div>
<div class="line"><a id="l00706" name="l00706"></a><span class="lineno">  706</span>&gt;::type&gt; : std::true_type {};</div>
<div class="line"><a id="l00707" name="l00707"></a><span class="lineno">  707</span> </div>
<div class="line"><a id="l00708" name="l00708"></a><span class="lineno">  708</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a id="l00709" name="l00709"></a><span class="lineno">  709</span><span class="keyword">using </span>is_uint32 = std::is_same&lt;typename std::decay&lt;T&gt;::type, uint32_t&gt;;</div>
<div class="line"><a id="l00710" name="l00710"></a><span class="lineno">  710</span> </div>
<div class="line"><a id="l00711" name="l00711"></a><span class="lineno">  711</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span>... Args&gt;</div>
<div class="line"><a id="l00712" name="l00712"></a><span class="lineno">  712</span><span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> silence_unused(Args <span class="keyword">const</span>&amp;...) <span class="keyword">noexcept</span> {}</div>
<div class="line"><a id="l00713" name="l00713"></a><span class="lineno">  713</span> </div>
<div class="line"><a id="l00714" name="l00714"></a><span class="lineno">  714</span>}  <span class="comment">// namespace detail</span></div>
<div class="line"><a id="l00715" name="l00715"></a><span class="lineno">  715</span> </div>
<div class="foldopen" id="foldopen00769" data-start="{" data-end="};">
<div class="line"><a id="l00769" name="l00769"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1domain.html">  769</a></span><span class="keyword">class </span><a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a> {</div>
<div class="line"><a id="l00770" name="l00770"></a><span class="lineno">  770</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00771" name="l00771"></a><span class="lineno">  771</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a> <span class="keyword">const</span>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l00772" name="l00772"></a><span class="lineno">  772</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a>&amp; operator=(<a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a> <span class="keyword">const</span>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l00773" name="l00773"></a><span class="lineno">  773</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a>&amp;&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l00774" name="l00774"></a><span class="lineno">  774</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a>&amp; operator=(<a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a>&amp;&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l00775" name="l00775"></a><span class="lineno">  775</span> </div>
<div class="foldopen" id="foldopen00787" data-start="{" data-end="};">
<div class="line"><a id="l00787" name="l00787"></a><span class="lineno"><a class="line" href="structnvtx3_1_1v1_1_1domain_1_1global.html">  787</a></span>  <span class="keyword">struct </span><a class="code hl_struct" href="structnvtx3_1_1v1_1_1domain_1_1global.html">global</a> {</div>
<div class="line"><a id="l00788" name="l00788"></a><span class="lineno">  788</span>  };</div>
</div>
<div class="line"><a id="l00789" name="l00789"></a><span class="lineno">  789</span> </div>
<div class="line"><a id="l00790" name="l00790"></a><span class="lineno">  790</span><span class="preprocessor">#if NVTX3_USE_CHECKED_OVERLOADS_FOR_GET</span></div>
<div class="line"><a id="l00835" name="l00835"></a><span class="lineno">  835</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> D = <a class="code hl_struct" href="structnvtx3_1_1v1_1_1domain_1_1global.html">global</a>,</div>
<div class="line"><a id="l00836" name="l00836"></a><span class="lineno">  836</span>    <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l00837" name="l00837"></a><span class="lineno">  837</span>      detail::is_c_string&lt;<span class="keyword">decltype</span>(D::name)&gt;::value</div>
<div class="line"><a id="l00838" name="l00838"></a><span class="lineno">  838</span>    , <span class="keywordtype">int</span>&gt;::type = 0&gt;</div>
<div class="foldopen" id="foldopen00839" data-start="{" data-end="}">
<div class="line"><a id="l00839" name="l00839"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1domain.html#a0d83a594238449a3da85e337409fc3db">  839</a></span>  NVTX3_NO_DISCARD <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a> <span class="keyword">const</span>&amp; <a class="code hl_function" href="classnvtx3_1_1v1_1_1domain.html#a0d83a594238449a3da85e337409fc3db">get</a>() <span class="keyword">noexcept</span></div>
<div class="line"><a id="l00840" name="l00840"></a><span class="lineno">  840</span>  {</div>
<div class="line"><a id="l00841" name="l00841"></a><span class="lineno">  841</span>    <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a> <span class="keyword">const</span> d(D::name);</div>
<div class="line"><a id="l00842" name="l00842"></a><span class="lineno">  842</span>    <span class="keywordflow">return</span> d;</div>
<div class="line"><a id="l00843" name="l00843"></a><span class="lineno">  843</span>  }</div>
</div>
<div class="line"><a id="l00844" name="l00844"></a><span class="lineno">  844</span> </div>
<div class="line"><a id="l00850" name="l00850"></a><span class="lineno">  850</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> D = global,</div>
<div class="line"><a id="l00851" name="l00851"></a><span class="lineno">  851</span>    <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l00852" name="l00852"></a><span class="lineno">  852</span>      !detail::is_c_string&lt;<span class="keyword">decltype</span>(D::name)&gt;::value</div>
<div class="line"><a id="l00853" name="l00853"></a><span class="lineno">  853</span>    , <span class="keywordtype">int</span>&gt;::type = 0&gt;</div>
<div class="foldopen" id="foldopen00854" data-start="{" data-end="}">
<div class="line"><a id="l00854" name="l00854"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1domain.html#a0d83a594238449a3da85e337409fc3db">  854</a></span>  NVTX3_NO_DISCARD <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a> <span class="keyword">const</span>&amp; <a class="code hl_function" href="classnvtx3_1_1v1_1_1domain.html#a0d83a594238449a3da85e337409fc3db">get</a>() <span class="keyword">noexcept</span></div>
<div class="line"><a id="l00855" name="l00855"></a><span class="lineno">  855</span>  {</div>
<div class="line"><a id="l00856" name="l00856"></a><span class="lineno">  856</span>    NVTX3_STATIC_ASSERT(detail::always_false&lt;D&gt;::value,</div>
<div class="line"><a id="l00857" name="l00857"></a><span class="lineno">  857</span>      <span class="stringliteral">&quot;Type used to identify an NVTX domain must contain a static constexpr member &quot;</span></div>
<div class="line"><a id="l00858" name="l00858"></a><span class="lineno">  858</span>      <span class="stringliteral">&quot;called &#39;name&#39; of type const char* or const wchar_t* -- &#39;name&#39; member is not &quot;</span></div>
<div class="line"><a id="l00859" name="l00859"></a><span class="lineno">  859</span>      <span class="stringliteral">&quot;convertible to either of those types&quot;</span>);</div>
<div class="line"><a id="l00860" name="l00860"></a><span class="lineno">  860</span>    <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a> <span class="keyword">const</span> unused;</div>
<div class="line"><a id="l00861" name="l00861"></a><span class="lineno">  861</span>    <span class="keywordflow">return</span> unused;  <span class="comment">// Function must compile for static_assert to be triggered</span></div>
<div class="line"><a id="l00862" name="l00862"></a><span class="lineno">  862</span>  }</div>
</div>
<div class="line"><a id="l00863" name="l00863"></a><span class="lineno">  863</span> </div>
<div class="line"><a id="l00868" name="l00868"></a><span class="lineno">  868</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> D = global,</div>
<div class="line"><a id="l00869" name="l00869"></a><span class="lineno">  869</span>    <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l00870" name="l00870"></a><span class="lineno">  870</span>      !detail::has_name&lt;D&gt;::value</div>
<div class="line"><a id="l00871" name="l00871"></a><span class="lineno">  871</span>    , <span class="keywordtype">int</span>&gt;::type = 0&gt;</div>
<div class="foldopen" id="foldopen00872" data-start="{" data-end="}">
<div class="line"><a id="l00872" name="l00872"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1domain.html#a0d83a594238449a3da85e337409fc3db">  872</a></span>  NVTX3_NO_DISCARD <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a> <span class="keyword">const</span>&amp; <a class="code hl_function" href="classnvtx3_1_1v1_1_1domain.html#a0d83a594238449a3da85e337409fc3db">get</a>() noexcept</div>
<div class="line"><a id="l00873" name="l00873"></a><span class="lineno">  873</span>  {</div>
<div class="line"><a id="l00874" name="l00874"></a><span class="lineno">  874</span>    NVTX3_STATIC_ASSERT(detail::always_false&lt;D&gt;::value,</div>
<div class="line"><a id="l00875" name="l00875"></a><span class="lineno">  875</span>      <span class="stringliteral">&quot;Type used to identify an NVTX domain must contain a static constexpr member &quot;</span></div>
<div class="line"><a id="l00876" name="l00876"></a><span class="lineno">  876</span>      <span class="stringliteral">&quot;called &#39;name&#39; of type const char* or const wchar_t* -- &#39;name&#39; member is missing&quot;</span>);</div>
<div class="line"><a id="l00877" name="l00877"></a><span class="lineno">  877</span>    <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a> <span class="keyword">const</span> unused;</div>
<div class="line"><a id="l00878" name="l00878"></a><span class="lineno">  878</span>    <span class="keywordflow">return</span> unused;  <span class="comment">// Function must compile for static_assert to be triggered</span></div>
<div class="line"><a id="l00879" name="l00879"></a><span class="lineno">  879</span>  }</div>
</div>
<div class="line"><a id="l00880" name="l00880"></a><span class="lineno">  880</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l00881" name="l00881"></a><span class="lineno">  881</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> D = global&gt;</div>
<div class="line"><a id="l00882" name="l00882"></a><span class="lineno">  882</span>  NVTX3_NO_DISCARD <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a> <span class="keyword">const</span>&amp; get() noexcept</div>
<div class="line"><a id="l00883" name="l00883"></a><span class="lineno">  883</span>  {</div>
<div class="line"><a id="l00884" name="l00884"></a><span class="lineno">  884</span>    <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a> <span class="keyword">const</span> d(D::name);</div>
<div class="line"><a id="l00885" name="l00885"></a><span class="lineno">  885</span>    <span class="keywordflow">return</span> d;</div>
<div class="line"><a id="l00886" name="l00886"></a><span class="lineno">  886</span>  }</div>
<div class="line"><a id="l00887" name="l00887"></a><span class="lineno">  887</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00888" name="l00888"></a><span class="lineno">  888</span> </div>
<div class="line"><a id="l00895" name="l00895"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1domain.html#aa569f92fc6b823641524ba5daa5baa66">  895</a></span>  <span class="keyword">operator</span> nvtxDomainHandle_t() const noexcept { <span class="keywordflow">return</span> _domain; }</div>
<div class="line"><a id="l00896" name="l00896"></a><span class="lineno">  896</span> </div>
<div class="line"><a id="l00897" name="l00897"></a><span class="lineno">  897</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l00906" name="l00906"></a><span class="lineno">  906</span>  <span class="keyword">explicit</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a>(<span class="keywordtype">char</span> <span class="keyword">const</span>* name) noexcept : _domain{nvtxDomainCreateA(name)} {}</div>
<div class="line"><a id="l00907" name="l00907"></a><span class="lineno">  907</span> </div>
<div class="line"><a id="l00916" name="l00916"></a><span class="lineno">  916</span>  <span class="keyword">explicit</span> domain(<span class="keywordtype">wchar_t</span> <span class="keyword">const</span>* name) noexcept : _domain{nvtxDomainCreateW(name)} {}</div>
<div class="line"><a id="l00917" name="l00917"></a><span class="lineno">  917</span> </div>
<div class="line"><a id="l00926" name="l00926"></a><span class="lineno">  926</span>  <span class="keyword">explicit</span> domain(std::string <span class="keyword">const</span>&amp; name) noexcept : domain{name.c_str()} {}</div>
<div class="line"><a id="l00927" name="l00927"></a><span class="lineno">  927</span> </div>
<div class="line"><a id="l00936" name="l00936"></a><span class="lineno">  936</span>  <span class="keyword">explicit</span> domain(std::wstring <span class="keyword">const</span>&amp; name) noexcept : domain{name.c_str()} {}</div>
<div class="line"><a id="l00937" name="l00937"></a><span class="lineno">  937</span> </div>
<div class="line"><a id="l00946" name="l00946"></a><span class="lineno">  946</span>  <span class="keyword">constexpr</span> domain() noexcept {}</div>
<div class="line"><a id="l00947" name="l00947"></a><span class="lineno">  947</span> </div>
<div class="line"><a id="l00962" name="l00962"></a><span class="lineno">  962</span>  ~domain() = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l00963" name="l00963"></a><span class="lineno">  963</span> </div>
<div class="line"><a id="l00964" name="l00964"></a><span class="lineno">  964</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l00965" name="l00965"></a><span class="lineno">  965</span>  nvtxDomainHandle_t <span class="keyword">const</span> _domain{};  </div>
<div class="line"><a id="l00966" name="l00966"></a><span class="lineno">  966</span>};</div>
</div>
<div class="line"><a id="l00967" name="l00967"></a><span class="lineno">  967</span> </div>
<div class="line"><a id="l00981" name="l00981"></a><span class="lineno">  981</span><span class="keyword">template</span> &lt;&gt;</div>
<div class="foldopen" id="foldopen00982" data-start="{" data-end="}">
<div class="line"><a id="l00982" name="l00982"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#a2035d9aeb0dd80cb41c64352783171b9">  982</a></span>NVTX3_NO_DISCARD <span class="keyword">inline</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a> <span class="keyword">const</span>&amp; domain::get&lt;domain::global&gt;() noexcept</div>
<div class="line"><a id="l00983" name="l00983"></a><span class="lineno">  983</span>{</div>
<div class="line"><a id="l00984" name="l00984"></a><span class="lineno">  984</span>  <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a> <span class="keyword">const</span> d{};</div>
<div class="line"><a id="l00985" name="l00985"></a><span class="lineno">  985</span>  <span class="keywordflow">return</span> d;</div>
<div class="line"><a id="l00986" name="l00986"></a><span class="lineno">  986</span>}</div>
</div>
<div class="line"><a id="l00987" name="l00987"></a><span class="lineno">  987</span> </div>
<div class="foldopen" id="foldopen00993" data-start="{" data-end="};">
<div class="line"><a id="l00993" name="l00993"></a><span class="lineno"><a class="line" href="structnvtx3_1_1v1_1_1rgb.html">  993</a></span><span class="keyword">struct </span><a class="code hl_struct" href="structnvtx3_1_1v1_1_1rgb.html">rgb</a> {</div>
<div class="line"><a id="l00995" name="l00995"></a><span class="lineno"><a class="line" href="structnvtx3_1_1v1_1_1rgb.html#afc2175c4660eb39a9d905528d02fe1b8">  995</a></span>  <span class="keyword">using </span><a class="code hl_typedef" href="structnvtx3_1_1v1_1_1rgb.html#afc2175c4660eb39a9d905528d02fe1b8">component_type</a> = uint8_t;</div>
<div class="line"><a id="l00996" name="l00996"></a><span class="lineno">  996</span> </div>
<div class="foldopen" id="foldopen01007" data-start="{" data-end="}">
<div class="line"><a id="l01007" name="l01007"></a><span class="lineno"><a class="line" href="structnvtx3_1_1v1_1_1rgb.html#a558a299dbc7c98f3d9b7cdd4a5e013e4"> 1007</a></span>  <span class="keyword">constexpr</span> <a class="code hl_function" href="structnvtx3_1_1v1_1_1rgb.html#a558a299dbc7c98f3d9b7cdd4a5e013e4">rgb</a>(</div>
<div class="line"><a id="l01008" name="l01008"></a><span class="lineno"> 1008</span>    <a class="code hl_typedef" href="structnvtx3_1_1v1_1_1rgb.html#afc2175c4660eb39a9d905528d02fe1b8">component_type</a> red_,</div>
<div class="line"><a id="l01009" name="l01009"></a><span class="lineno"> 1009</span>    <a class="code hl_typedef" href="structnvtx3_1_1v1_1_1rgb.html#afc2175c4660eb39a9d905528d02fe1b8">component_type</a> green_,</div>
<div class="line"><a id="l01010" name="l01010"></a><span class="lineno"> 1010</span>    <a class="code hl_typedef" href="structnvtx3_1_1v1_1_1rgb.html#afc2175c4660eb39a9d905528d02fe1b8">component_type</a> blue_) noexcept</div>
<div class="line"><a id="l01011" name="l01011"></a><span class="lineno"> 1011</span>    : red{red_}, green{green_}, blue{blue_}</div>
<div class="line"><a id="l01012" name="l01012"></a><span class="lineno"> 1012</span>  {</div>
<div class="line"><a id="l01013" name="l01013"></a><span class="lineno"> 1013</span>  }</div>
</div>
<div class="line"><a id="l01014" name="l01014"></a><span class="lineno"> 1014</span> </div>
<div class="line"><a id="l01015" name="l01015"></a><span class="lineno"><a class="line" href="structnvtx3_1_1v1_1_1rgb.html#a0ba9bc1b62447a26b2763c2e0f89db58"> 1015</a></span>  <a class="code hl_typedef" href="structnvtx3_1_1v1_1_1rgb.html#afc2175c4660eb39a9d905528d02fe1b8">component_type</a> red{};    </div>
<div class="line"><a id="l01016" name="l01016"></a><span class="lineno"><a class="line" href="structnvtx3_1_1v1_1_1rgb.html#a3392ec8cdbe24db639f6bc57904647c3"> 1016</a></span>  <a class="code hl_typedef" href="structnvtx3_1_1v1_1_1rgb.html#afc2175c4660eb39a9d905528d02fe1b8">component_type</a> green{};  </div>
<div class="line"><a id="l01017" name="l01017"></a><span class="lineno"><a class="line" href="structnvtx3_1_1v1_1_1rgb.html#a0d5c114d99170ed8922dbdd743ec580f"> 1017</a></span>  <a class="code hl_typedef" href="structnvtx3_1_1v1_1_1rgb.html#afc2175c4660eb39a9d905528d02fe1b8">component_type</a> blue{};   </div>
<div class="line"><a id="l01018" name="l01018"></a><span class="lineno"> 1018</span>};</div>
</div>
<div class="line"><a id="l01019" name="l01019"></a><span class="lineno"> 1019</span> </div>
<div class="foldopen" id="foldopen01025" data-start="{" data-end="};">
<div class="line"><a id="l01025" name="l01025"></a><span class="lineno"><a class="line" href="structnvtx3_1_1v1_1_1argb.html"> 1025</a></span><span class="keyword">struct </span><a class="code hl_struct" href="structnvtx3_1_1v1_1_1argb.html">argb</a> final : <a class="code hl_struct" href="structnvtx3_1_1v1_1_1rgb.html">rgb</a> {</div>
<div class="foldopen" id="foldopen01038" data-start="{" data-end="}">
<div class="line"><a id="l01038" name="l01038"></a><span class="lineno"><a class="line" href="structnvtx3_1_1v1_1_1argb.html#afe825f33bf3e68178c1df87d86ec9d93"> 1038</a></span>  <span class="keyword">constexpr</span> <a class="code hl_function" href="structnvtx3_1_1v1_1_1argb.html#afe825f33bf3e68178c1df87d86ec9d93">argb</a>(</div>
<div class="line"><a id="l01039" name="l01039"></a><span class="lineno"> 1039</span>    <a class="code hl_typedef" href="structnvtx3_1_1v1_1_1rgb.html#afc2175c4660eb39a9d905528d02fe1b8">component_type</a> alpha_,</div>
<div class="line"><a id="l01040" name="l01040"></a><span class="lineno"> 1040</span>    <a class="code hl_typedef" href="structnvtx3_1_1v1_1_1rgb.html#afc2175c4660eb39a9d905528d02fe1b8">component_type</a> red_,</div>
<div class="line"><a id="l01041" name="l01041"></a><span class="lineno"> 1041</span>    <a class="code hl_typedef" href="structnvtx3_1_1v1_1_1rgb.html#afc2175c4660eb39a9d905528d02fe1b8">component_type</a> green_,</div>
<div class="line"><a id="l01042" name="l01042"></a><span class="lineno"> 1042</span>    <a class="code hl_typedef" href="structnvtx3_1_1v1_1_1rgb.html#afc2175c4660eb39a9d905528d02fe1b8">component_type</a> blue_) noexcept</div>
<div class="line"><a id="l01043" name="l01043"></a><span class="lineno"> 1043</span>    : <a class="code hl_struct" href="structnvtx3_1_1v1_1_1rgb.html">rgb</a>{red_, green_, blue_}, alpha{alpha_}</div>
<div class="line"><a id="l01044" name="l01044"></a><span class="lineno"> 1044</span>  {</div>
<div class="line"><a id="l01045" name="l01045"></a><span class="lineno"> 1045</span>  }</div>
</div>
<div class="line"><a id="l01046" name="l01046"></a><span class="lineno"> 1046</span> </div>
<div class="line"><a id="l01047" name="l01047"></a><span class="lineno"><a class="line" href="structnvtx3_1_1v1_1_1argb.html#af2b1b511212ab1c6cb1f5a340dc6b339"> 1047</a></span>  <a class="code hl_typedef" href="structnvtx3_1_1v1_1_1rgb.html#afc2175c4660eb39a9d905528d02fe1b8">component_type</a> alpha{};  </div>
<div class="line"><a id="l01048" name="l01048"></a><span class="lineno"> 1048</span>};</div>
</div>
<div class="line"><a id="l01049" name="l01049"></a><span class="lineno"> 1049</span> </div>
<div class="foldopen" id="foldopen01059" data-start="{" data-end="};">
<div class="line"><a id="l01059" name="l01059"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1color.html"> 1059</a></span><span class="keyword">class </span><a class="code hl_class" href="classnvtx3_1_1v1_1_1color.html">color</a> {</div>
<div class="line"><a id="l01060" name="l01060"></a><span class="lineno"> 1060</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l01062" name="l01062"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1color.html#a6327e421cdd233398693a2804aea942f"> 1062</a></span>  <span class="keyword">using </span><a class="code hl_typedef" href="classnvtx3_1_1v1_1_1color.html#a6327e421cdd233398693a2804aea942f">value_type</a> = uint32_t;</div>
<div class="line"><a id="l01063" name="l01063"></a><span class="lineno"> 1063</span> </div>
<div class="line"><a id="l01081" name="l01081"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1color.html#a671a9e63379a2896f5c689fb0a37f0a9"> 1081</a></span>  <span class="keyword">constexpr</span> <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1color.html#a671a9e63379a2896f5c689fb0a37f0a9">color</a>(<a class="code hl_typedef" href="classnvtx3_1_1v1_1_1color.html#a6327e421cdd233398693a2804aea942f">value_type</a> hex_code) noexcept : _value{hex_code} {}</div>
<div class="line"><a id="l01082" name="l01082"></a><span class="lineno"> 1082</span> </div>
<div class="foldopen" id="foldopen01089" data-start="{" data-end="}">
<div class="line"><a id="l01089" name="l01089"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1color.html#abd11ca09f1b3a66041cea45d4141dc37"> 1089</a></span>  <span class="keyword">constexpr</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1color.html#abd11ca09f1b3a66041cea45d4141dc37">color</a>(<a class="code hl_struct" href="structnvtx3_1_1v1_1_1argb.html">argb</a> argb_) noexcept</div>
<div class="line"><a id="l01090" name="l01090"></a><span class="lineno"> 1090</span>    : <a class="code hl_class" href="classnvtx3_1_1v1_1_1color.html">color</a>{from_bytes_msb_to_lsb(argb_.alpha, argb_.red, argb_.green, argb_.blue)}</div>
<div class="line"><a id="l01091" name="l01091"></a><span class="lineno"> 1091</span>  {</div>
<div class="line"><a id="l01092" name="l01092"></a><span class="lineno"> 1092</span>  }</div>
</div>
<div class="line"><a id="l01093" name="l01093"></a><span class="lineno"> 1093</span> </div>
<div class="foldopen" id="foldopen01102" data-start="{" data-end="}">
<div class="line"><a id="l01102" name="l01102"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1color.html#a47084ed086b5071cd7b070b0a4611e24"> 1102</a></span>  <span class="keyword">constexpr</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1color.html#a47084ed086b5071cd7b070b0a4611e24">color</a>(<a class="code hl_struct" href="structnvtx3_1_1v1_1_1rgb.html">rgb</a> rgb_) noexcept</div>
<div class="line"><a id="l01103" name="l01103"></a><span class="lineno"> 1103</span>    : <a class="code hl_class" href="classnvtx3_1_1v1_1_1color.html">color</a>{from_bytes_msb_to_lsb(0xFF, rgb_.red, rgb_.green, rgb_.blue)}</div>
<div class="line"><a id="l01104" name="l01104"></a><span class="lineno"> 1104</span>  {</div>
<div class="line"><a id="l01105" name="l01105"></a><span class="lineno"> 1105</span>  }</div>
</div>
<div class="line"><a id="l01106" name="l01106"></a><span class="lineno"> 1106</span> </div>
<div class="line"><a id="l01111" name="l01111"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1color.html#a44f694cefa3afee1d9dfbf2fde3a06f4"> 1111</a></span>  <span class="keyword">constexpr</span> <a class="code hl_typedef" href="classnvtx3_1_1v1_1_1color.html#a6327e421cdd233398693a2804aea942f">value_type</a> <a class="code hl_function" href="classnvtx3_1_1v1_1_1color.html#a44f694cefa3afee1d9dfbf2fde3a06f4">get_value</a>() const noexcept { <span class="keywordflow">return</span> _value; }</div>
<div class="line"><a id="l01112" name="l01112"></a><span class="lineno"> 1112</span> </div>
<div class="line"><a id="l01117" name="l01117"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1color.html#af550398d7d76d9452576860a4363d75c"> 1117</a></span>  <span class="keyword">constexpr</span> nvtxColorType_t <a class="code hl_function" href="classnvtx3_1_1v1_1_1color.html#af550398d7d76d9452576860a4363d75c">get_type</a>() const noexcept { <span class="keywordflow">return</span> _type; }</div>
<div class="line"><a id="l01118" name="l01118"></a><span class="lineno"> 1118</span> </div>
<div class="line"><a id="l01119" name="l01119"></a><span class="lineno"> 1119</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1color.html">color</a>() = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l01120" name="l01120"></a><span class="lineno"> 1120</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1color.html">~color</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l01121" name="l01121"></a><span class="lineno"> 1121</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1color.html">color</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1color.html">color</a> <span class="keyword">const</span>&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l01122" name="l01122"></a><span class="lineno"> 1122</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1color.html">color</a>&amp; operator=(<a class="code hl_class" href="classnvtx3_1_1v1_1_1color.html">color</a> <span class="keyword">const</span>&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l01123" name="l01123"></a><span class="lineno"> 1123</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1color.html">color</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1color.html">color</a>&amp;&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l01124" name="l01124"></a><span class="lineno"> 1124</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1color.html">color</a>&amp; operator=(<a class="code hl_class" href="classnvtx3_1_1v1_1_1color.html">color</a>&amp;&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l01125" name="l01125"></a><span class="lineno"> 1125</span> </div>
<div class="line"><a id="l01126" name="l01126"></a><span class="lineno"> 1126</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l01132" name="l01132"></a><span class="lineno"> 1132</span>  <span class="keyword">constexpr</span> <span class="keyword">static</span> value_type from_bytes_msb_to_lsb(</div>
<div class="line"><a id="l01133" name="l01133"></a><span class="lineno"> 1133</span>    uint8_t byte3,</div>
<div class="line"><a id="l01134" name="l01134"></a><span class="lineno"> 1134</span>    uint8_t byte2,</div>
<div class="line"><a id="l01135" name="l01135"></a><span class="lineno"> 1135</span>    uint8_t byte1,</div>
<div class="line"><a id="l01136" name="l01136"></a><span class="lineno"> 1136</span>    uint8_t byte0) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l01137" name="l01137"></a><span class="lineno"> 1137</span>  {</div>
<div class="line"><a id="l01138" name="l01138"></a><span class="lineno"> 1138</span>    <span class="keywordflow">return</span> uint32_t{byte3} &lt;&lt; 24 | uint32_t{byte2} &lt;&lt; 16 | uint32_t{byte1} &lt;&lt; 8 | uint32_t{byte0};</div>
<div class="line"><a id="l01139" name="l01139"></a><span class="lineno"> 1139</span>  }</div>
<div class="line"><a id="l01140" name="l01140"></a><span class="lineno"> 1140</span> </div>
<div class="line"><a id="l01141" name="l01141"></a><span class="lineno"> 1141</span>  value_type _value{};                     </div>
<div class="line"><a id="l01142" name="l01142"></a><span class="lineno"> 1142</span>  nvtxColorType_t _type{NVTX_COLOR_ARGB};  </div>
<div class="line"><a id="l01143" name="l01143"></a><span class="lineno"> 1143</span>};</div>
</div>
<div class="line"><a id="l01144" name="l01144"></a><span class="lineno"> 1144</span> </div>
<div class="foldopen" id="foldopen01166" data-start="{" data-end="};">
<div class="line"><a id="l01166" name="l01166"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1category.html"> 1166</a></span><span class="keyword">class </span><a class="code hl_class" href="classnvtx3_1_1v1_1_1category.html">category</a> {</div>
<div class="line"><a id="l01167" name="l01167"></a><span class="lineno"> 1167</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l01169" name="l01169"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1category.html#a93b9c6f1e074a03ee50287c9c6414bc0"> 1169</a></span>  <span class="keyword">using </span><a class="code hl_typedef" href="classnvtx3_1_1v1_1_1category.html#a93b9c6f1e074a03ee50287c9c6414bc0">id_type</a> = uint32_t;</div>
<div class="line"><a id="l01170" name="l01170"></a><span class="lineno"> 1170</span> </div>
<div class="line"><a id="l01180" name="l01180"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1category.html#a16b26c66ef40850b7bf79fb8e8b9ccec"> 1180</a></span>  <span class="keyword">constexpr</span> <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1category.html#a16b26c66ef40850b7bf79fb8e8b9ccec">category</a>(<a class="code hl_typedef" href="classnvtx3_1_1v1_1_1category.html#a93b9c6f1e074a03ee50287c9c6414bc0">id_type</a> <span class="keywordtype">id</span>) noexcept : id_{<span class="keywordtype">id</span>} {}</div>
<div class="line"><a id="l01181" name="l01181"></a><span class="lineno"> 1181</span> </div>
<div class="line"><a id="l01186" name="l01186"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1category.html#a5d59d395dff9e74ec8bd6154581fc345"> 1186</a></span>  <span class="keyword">constexpr</span> <a class="code hl_typedef" href="classnvtx3_1_1v1_1_1category.html#a93b9c6f1e074a03ee50287c9c6414bc0">id_type</a> <a class="code hl_function" href="classnvtx3_1_1v1_1_1category.html#a5d59d395dff9e74ec8bd6154581fc345">get_id</a>() const noexcept { <span class="keywordflow">return</span> id_; }</div>
<div class="line"><a id="l01187" name="l01187"></a><span class="lineno"> 1187</span> </div>
<div class="line"><a id="l01188" name="l01188"></a><span class="lineno"> 1188</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1category.html">category</a>() = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l01189" name="l01189"></a><span class="lineno"> 1189</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1category.html">~category</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l01190" name="l01190"></a><span class="lineno"> 1190</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1category.html">category</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1category.html">category</a> <span class="keyword">const</span>&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l01191" name="l01191"></a><span class="lineno"> 1191</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1category.html">category</a>&amp; operator=(<a class="code hl_class" href="classnvtx3_1_1v1_1_1category.html">category</a> <span class="keyword">const</span>&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l01192" name="l01192"></a><span class="lineno"> 1192</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1category.html">category</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1category.html">category</a>&amp;&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l01193" name="l01193"></a><span class="lineno"> 1193</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1category.html">category</a>&amp; operator=(<a class="code hl_class" href="classnvtx3_1_1v1_1_1category.html">category</a>&amp;&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l01194" name="l01194"></a><span class="lineno"> 1194</span> </div>
<div class="line"><a id="l01195" name="l01195"></a><span class="lineno"> 1195</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l01196" name="l01196"></a><span class="lineno"> 1196</span>  id_type id_{};  </div>
<div class="line"><a id="l01197" name="l01197"></a><span class="lineno"> 1197</span>};</div>
</div>
<div class="line"><a id="l01198" name="l01198"></a><span class="lineno"> 1198</span> </div>
<div class="line"><a id="l01248" name="l01248"></a><span class="lineno"> 1248</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> D = domain::global&gt;</div>
<div class="foldopen" id="foldopen01249" data-start="{" data-end="};">
<div class="line"><a id="l01249" name="l01249"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1named__category__in.html"> 1249</a></span><span class="keyword">class </span><a class="code hl_class" href="classnvtx3_1_1v1_1_1named__category__in.html">named_category_in</a> final : <span class="keyword">public</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1category.html">category</a> {</div>
<div class="line"><a id="l01250" name="l01250"></a><span class="lineno"> 1250</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l01251" name="l01251"></a><span class="lineno"> 1251</span><span class="preprocessor">#if NVTX3_USE_CHECKED_OVERLOADS_FOR_GET</span></div>
<div class="line"><a id="l01286" name="l01286"></a><span class="lineno"> 1286</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> C,</div>
<div class="line"><a id="l01287" name="l01287"></a><span class="lineno"> 1287</span>    <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l01288" name="l01288"></a><span class="lineno"> 1288</span>      detail::is_c_string&lt;<span class="keyword">decltype</span>(C::name)&gt;::value &amp;&amp;</div>
<div class="line"><a id="l01289" name="l01289"></a><span class="lineno"> 1289</span>      detail::is_uint32&lt;<span class="keyword">decltype</span>(C::id)&gt;::value</div>
<div class="line"><a id="l01290" name="l01290"></a><span class="lineno"> 1290</span>    , <span class="keywordtype">int</span>&gt;::type = 0&gt;</div>
<div class="foldopen" id="foldopen01291" data-start="{" data-end="}">
<div class="line"><a id="l01291" name="l01291"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1named__category__in.html#a3bc82f4cd71482347796787bc4436e30"> 1291</a></span>  <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1named__category__in.html">named_category_in</a> <span class="keyword">const</span>&amp; <a class="code hl_function" href="classnvtx3_1_1v1_1_1named__category__in.html#a3bc82f4cd71482347796787bc4436e30">get</a>() noexcept</div>
<div class="line"><a id="l01292" name="l01292"></a><span class="lineno"> 1292</span>  {</div>
<div class="line"><a id="l01293" name="l01293"></a><span class="lineno"> 1293</span>    <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1named__category__in.html">named_category_in</a> <span class="keyword">const</span> cat(C::id, C::name);</div>
<div class="line"><a id="l01294" name="l01294"></a><span class="lineno"> 1294</span>    <span class="keywordflow">return</span> cat;</div>
<div class="line"><a id="l01295" name="l01295"></a><span class="lineno"> 1295</span>  }</div>
</div>
<div class="line"><a id="l01296" name="l01296"></a><span class="lineno"> 1296</span> </div>
<div class="line"><a id="l01303" name="l01303"></a><span class="lineno"> 1303</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> C,</div>
<div class="line"><a id="l01304" name="l01304"></a><span class="lineno"> 1304</span>    <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l01305" name="l01305"></a><span class="lineno"> 1305</span>      !detail::is_c_string&lt;<span class="keyword">decltype</span>(C::name)&gt;::value ||</div>
<div class="line"><a id="l01306" name="l01306"></a><span class="lineno"> 1306</span>      !detail::is_uint32&lt;<span class="keyword">decltype</span>(C::id)&gt;::value</div>
<div class="line"><a id="l01307" name="l01307"></a><span class="lineno"> 1307</span>    , <span class="keywordtype">int</span>&gt;::type = 0&gt;</div>
<div class="foldopen" id="foldopen01308" data-start="{" data-end="}">
<div class="line"><a id="l01308" name="l01308"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1named__category__in.html#a3bc82f4cd71482347796787bc4436e30"> 1308</a></span>  NVTX3_NO_DISCARD <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1named__category__in.html">named_category_in</a> <span class="keyword">const</span>&amp; <a class="code hl_function" href="classnvtx3_1_1v1_1_1named__category__in.html#a3bc82f4cd71482347796787bc4436e30">get</a>() noexcept</div>
<div class="line"><a id="l01309" name="l01309"></a><span class="lineno"> 1309</span>  {</div>
<div class="line"><a id="l01310" name="l01310"></a><span class="lineno"> 1310</span>    NVTX3_STATIC_ASSERT(detail::is_c_string&lt;<span class="keyword">decltype</span>(C::name)&gt;::value,</div>
<div class="line"><a id="l01311" name="l01311"></a><span class="lineno"> 1311</span>      <span class="stringliteral">&quot;Type used to name an NVTX category must contain a static constexpr member &quot;</span></div>
<div class="line"><a id="l01312" name="l01312"></a><span class="lineno"> 1312</span>      <span class="stringliteral">&quot;called &#39;name&#39; of type const char* or const wchar_t* -- &#39;name&#39; member is not &quot;</span></div>
<div class="line"><a id="l01313" name="l01313"></a><span class="lineno"> 1313</span>      <span class="stringliteral">&quot;convertible to either of those types&quot;</span>);</div>
<div class="line"><a id="l01314" name="l01314"></a><span class="lineno"> 1314</span>    NVTX3_STATIC_ASSERT(detail::is_uint32&lt;<span class="keyword">decltype</span>(C::id)&gt;::value,</div>
<div class="line"><a id="l01315" name="l01315"></a><span class="lineno"> 1315</span>      <span class="stringliteral">&quot;Type used to name an NVTX category must contain a static constexpr member &quot;</span></div>
<div class="line"><a id="l01316" name="l01316"></a><span class="lineno"> 1316</span>      <span class="stringliteral">&quot;called &#39;id&#39; of type uint32_t -- &#39;id&#39; member is the wrong type&quot;</span>);</div>
<div class="line"><a id="l01317" name="l01317"></a><span class="lineno"> 1317</span>    <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1named__category__in.html">named_category_in</a> <span class="keyword">const</span> unused;</div>
<div class="line"><a id="l01318" name="l01318"></a><span class="lineno"> 1318</span>    <span class="keywordflow">return</span> unused;  <span class="comment">// Function must compile for static_assert to be triggered</span></div>
<div class="line"><a id="l01319" name="l01319"></a><span class="lineno"> 1319</span>  }</div>
</div>
<div class="line"><a id="l01320" name="l01320"></a><span class="lineno"> 1320</span> </div>
<div class="line"><a id="l01325" name="l01325"></a><span class="lineno"> 1325</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> C,</div>
<div class="line"><a id="l01326" name="l01326"></a><span class="lineno"> 1326</span>    <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l01327" name="l01327"></a><span class="lineno"> 1327</span>      !detail::has_name&lt;C&gt;::value ||</div>
<div class="line"><a id="l01328" name="l01328"></a><span class="lineno"> 1328</span>      !detail::has_id&lt;C&gt;::value</div>
<div class="line"><a id="l01329" name="l01329"></a><span class="lineno"> 1329</span>    , <span class="keywordtype">int</span>&gt;::type = 0&gt;</div>
<div class="foldopen" id="foldopen01330" data-start="{" data-end="}">
<div class="line"><a id="l01330" name="l01330"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1named__category__in.html#a3bc82f4cd71482347796787bc4436e30"> 1330</a></span>  NVTX3_NO_DISCARD <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1named__category__in.html">named_category_in</a> <span class="keyword">const</span>&amp; <a class="code hl_function" href="classnvtx3_1_1v1_1_1named__category__in.html#a3bc82f4cd71482347796787bc4436e30">get</a>() noexcept</div>
<div class="line"><a id="l01331" name="l01331"></a><span class="lineno"> 1331</span>  {</div>
<div class="line"><a id="l01332" name="l01332"></a><span class="lineno"> 1332</span>    NVTX3_STATIC_ASSERT(detail::has_name&lt;C&gt;::value,</div>
<div class="line"><a id="l01333" name="l01333"></a><span class="lineno"> 1333</span>      <span class="stringliteral">&quot;Type used to name an NVTX category must contain a static constexpr member &quot;</span></div>
<div class="line"><a id="l01334" name="l01334"></a><span class="lineno"> 1334</span>      <span class="stringliteral">&quot;called &#39;name&#39; of type const char* or const wchar_t* -- &#39;name&#39; member is missing&quot;</span>);</div>
<div class="line"><a id="l01335" name="l01335"></a><span class="lineno"> 1335</span>    NVTX3_STATIC_ASSERT(detail::has_id&lt;C&gt;::value,</div>
<div class="line"><a id="l01336" name="l01336"></a><span class="lineno"> 1336</span>      <span class="stringliteral">&quot;Type used to name an NVTX category must contain a static constexpr member &quot;</span></div>
<div class="line"><a id="l01337" name="l01337"></a><span class="lineno"> 1337</span>      <span class="stringliteral">&quot;called &#39;id&#39; of type uint32_t -- &#39;id&#39; member is missing&quot;</span>);</div>
<div class="line"><a id="l01338" name="l01338"></a><span class="lineno"> 1338</span>    <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1named__category__in.html">named_category_in</a> <span class="keyword">const</span> unused;</div>
<div class="line"><a id="l01339" name="l01339"></a><span class="lineno"> 1339</span>    <span class="keywordflow">return</span> unused;  <span class="comment">// Function must compile for static_assert to be triggered</span></div>
<div class="line"><a id="l01340" name="l01340"></a><span class="lineno"> 1340</span>  }</div>
</div>
<div class="line"><a id="l01341" name="l01341"></a><span class="lineno"> 1341</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l01342" name="l01342"></a><span class="lineno"> 1342</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> C&gt;</div>
<div class="line"><a id="l01343" name="l01343"></a><span class="lineno"> 1343</span>  NVTX3_NO_DISCARD <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1named__category__in.html">named_category_in</a> <span class="keyword">const</span>&amp; get() noexcept</div>
<div class="line"><a id="l01344" name="l01344"></a><span class="lineno"> 1344</span>  {</div>
<div class="line"><a id="l01345" name="l01345"></a><span class="lineno"> 1345</span>    <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1named__category__in.html">named_category_in</a> <span class="keyword">const</span> cat(C::id, C::name);</div>
<div class="line"><a id="l01346" name="l01346"></a><span class="lineno"> 1346</span>    <span class="keywordflow">return</span> cat;</div>
<div class="line"><a id="l01347" name="l01347"></a><span class="lineno"> 1347</span>  }</div>
<div class="line"><a id="l01348" name="l01348"></a><span class="lineno"> 1348</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l01349" name="l01349"></a><span class="lineno"> 1349</span> </div>
<div class="line"><a id="l01350" name="l01350"></a><span class="lineno"> 1350</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l01351" name="l01351"></a><span class="lineno"> 1351</span>  <span class="comment">// Default constructor is only used internally for static_assert(false) cases.</span></div>
<div class="line"><a id="l01352" name="l01352"></a><span class="lineno"> 1352</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1named__category__in.html">named_category_in</a>() noexcept : <a class="code hl_class" href="classnvtx3_1_1v1_1_1category.html">category</a>{0} {}</div>
<div class="line"><a id="l01353" name="l01353"></a><span class="lineno"> 1353</span> </div>
<div class="line"><a id="l01354" name="l01354"></a><span class="lineno"> 1354</span> <span class="keyword">public</span>:</div>
<div class="foldopen" id="foldopen01365" data-start="{" data-end="}">
<div class="line"><a id="l01365" name="l01365"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1named__category__in.html#a7fe4261f6a0b9d1cfb6e566d8ff2135f"> 1365</a></span>  <a class="code hl_function" href="classnvtx3_1_1v1_1_1named__category__in.html#a7fe4261f6a0b9d1cfb6e566d8ff2135f">named_category_in</a>(<a class="code hl_typedef" href="classnvtx3_1_1v1_1_1category.html#a93b9c6f1e074a03ee50287c9c6414bc0">id_type</a> <span class="keywordtype">id</span>, <span class="keywordtype">char</span> <span class="keyword">const</span>* name) noexcept : <a class="code hl_class" href="classnvtx3_1_1v1_1_1category.html">category</a>{<span class="keywordtype">id</span>}</div>
<div class="line"><a id="l01366" name="l01366"></a><span class="lineno"> 1366</span>  {</div>
<div class="line"><a id="l01367" name="l01367"></a><span class="lineno"> 1367</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="line"><a id="l01368" name="l01368"></a><span class="lineno"> 1368</span>    nvtxDomainNameCategoryA(domain::get&lt;D&gt;(), get_id(), name);</div>
<div class="line"><a id="l01369" name="l01369"></a><span class="lineno"> 1369</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l01370" name="l01370"></a><span class="lineno"> 1370</span>    (void)<span class="keywordtype">id</span>;</div>
<div class="line"><a id="l01371" name="l01371"></a><span class="lineno"> 1371</span>    (void)name;</div>
<div class="line"><a id="l01372" name="l01372"></a><span class="lineno"> 1372</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l01373" name="l01373"></a><span class="lineno"> 1373</span>  }</div>
</div>
<div class="line"><a id="l01374" name="l01374"></a><span class="lineno"> 1374</span> </div>
<div class="foldopen" id="foldopen01385" data-start="{" data-end="}">
<div class="line"><a id="l01385" name="l01385"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1named__category__in.html#a0b8ac1f00f1c0686858a20884c8eb19a"> 1385</a></span>  <a class="code hl_function" href="classnvtx3_1_1v1_1_1named__category__in.html#a0b8ac1f00f1c0686858a20884c8eb19a">named_category_in</a>(<a class="code hl_typedef" href="classnvtx3_1_1v1_1_1category.html#a93b9c6f1e074a03ee50287c9c6414bc0">id_type</a> <span class="keywordtype">id</span>, <span class="keywordtype">wchar_t</span> <span class="keyword">const</span>* name) noexcept : <a class="code hl_class" href="classnvtx3_1_1v1_1_1category.html">category</a>{<span class="keywordtype">id</span>}</div>
<div class="line"><a id="l01386" name="l01386"></a><span class="lineno"> 1386</span>  {</div>
<div class="line"><a id="l01387" name="l01387"></a><span class="lineno"> 1387</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="line"><a id="l01388" name="l01388"></a><span class="lineno"> 1388</span>    nvtxDomainNameCategoryW(domain::get&lt;D&gt;(), get_id(), name);</div>
<div class="line"><a id="l01389" name="l01389"></a><span class="lineno"> 1389</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l01390" name="l01390"></a><span class="lineno"> 1390</span>    (void)<span class="keywordtype">id</span>;</div>
<div class="line"><a id="l01391" name="l01391"></a><span class="lineno"> 1391</span>    (void)name;</div>
<div class="line"><a id="l01392" name="l01392"></a><span class="lineno"> 1392</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l01393" name="l01393"></a><span class="lineno"> 1393</span>  }</div>
</div>
<div class="line"><a id="l01394" name="l01394"></a><span class="lineno"> 1394</span>};</div>
</div>
<div class="line"><a id="l01395" name="l01395"></a><span class="lineno"> 1395</span> </div>
<div class="line"><a id="l01400" name="l01400"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#a5ffa040266b85b6fb131dcb9ade33a0a"> 1400</a></span><span class="keyword">using </span><a class="code hl_class" href="classnvtx3_1_1v1_1_1named__category__in.html">named_category</a> = <a class="code hl_class" href="classnvtx3_1_1v1_1_1named__category__in.html">named_category_in&lt;domain::global&gt;</a>;</div>
<div class="line"><a id="l01401" name="l01401"></a><span class="lineno"> 1401</span> </div>
<div class="line"><a id="l01448" name="l01448"></a><span class="lineno"> 1448</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> D = domain::global&gt;</div>
<div class="foldopen" id="foldopen01449" data-start="{" data-end="};">
<div class="line"><a id="l01449" name="l01449"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1registered__string__in.html"> 1449</a></span><span class="keyword">class </span><a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a> {</div>
<div class="line"><a id="l01450" name="l01450"></a><span class="lineno"> 1450</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l01451" name="l01451"></a><span class="lineno"> 1451</span><span class="preprocessor">#if NVTX3_USE_CHECKED_OVERLOADS_FOR_GET</span></div>
<div class="line"><a id="l01485" name="l01485"></a><span class="lineno"> 1485</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> M,</div>
<div class="line"><a id="l01486" name="l01486"></a><span class="lineno"> 1486</span>    <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l01487" name="l01487"></a><span class="lineno"> 1487</span>      detail::is_c_string&lt;<span class="keyword">decltype</span>(M::message)&gt;::value</div>
<div class="line"><a id="l01488" name="l01488"></a><span class="lineno"> 1488</span>    , <span class="keywordtype">int</span>&gt;::type = 0&gt;</div>
<div class="foldopen" id="foldopen01489" data-start="{" data-end="}">
<div class="line"><a id="l01489" name="l01489"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1registered__string__in.html#abf90f8765081cee5f99d971271e29567"> 1489</a></span>  NVTX3_NO_DISCARD <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a> <span class="keyword">const</span>&amp; <a class="code hl_function" href="classnvtx3_1_1v1_1_1registered__string__in.html#abf90f8765081cee5f99d971271e29567">get</a>() <span class="keyword">noexcept</span></div>
<div class="line"><a id="l01490" name="l01490"></a><span class="lineno"> 1490</span>  {</div>
<div class="line"><a id="l01491" name="l01491"></a><span class="lineno"> 1491</span>    <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a> <span class="keyword">const</span> regstr(M::message);</div>
<div class="line"><a id="l01492" name="l01492"></a><span class="lineno"> 1492</span>    <span class="keywordflow">return</span> regstr;</div>
<div class="line"><a id="l01493" name="l01493"></a><span class="lineno"> 1493</span>  }</div>
</div>
<div class="line"><a id="l01494" name="l01494"></a><span class="lineno"> 1494</span> </div>
<div class="line"><a id="l01500" name="l01500"></a><span class="lineno"> 1500</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> M,</div>
<div class="line"><a id="l01501" name="l01501"></a><span class="lineno"> 1501</span>    <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l01502" name="l01502"></a><span class="lineno"> 1502</span>      !detail::is_c_string&lt;<span class="keyword">decltype</span>(M::message)&gt;::value</div>
<div class="line"><a id="l01503" name="l01503"></a><span class="lineno"> 1503</span>    , <span class="keywordtype">int</span>&gt;::type = 0&gt;</div>
<div class="foldopen" id="foldopen01504" data-start="{" data-end="}">
<div class="line"><a id="l01504" name="l01504"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1registered__string__in.html#abf90f8765081cee5f99d971271e29567"> 1504</a></span>  NVTX3_NO_DISCARD <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a> <span class="keyword">const</span>&amp; <a class="code hl_function" href="classnvtx3_1_1v1_1_1registered__string__in.html#abf90f8765081cee5f99d971271e29567">get</a>() <span class="keyword">noexcept</span></div>
<div class="line"><a id="l01505" name="l01505"></a><span class="lineno"> 1505</span>  {</div>
<div class="line"><a id="l01506" name="l01506"></a><span class="lineno"> 1506</span>    NVTX3_STATIC_ASSERT(detail::always_false&lt;M&gt;::value,</div>
<div class="line"><a id="l01507" name="l01507"></a><span class="lineno"> 1507</span>      <span class="stringliteral">&quot;Type used to register an NVTX string must contain a static constexpr member &quot;</span></div>
<div class="line"><a id="l01508" name="l01508"></a><span class="lineno"> 1508</span>      <span class="stringliteral">&quot;called &#39;message&#39; of type const char* or const wchar_t* -- &#39;message&#39; member is &quot;</span></div>
<div class="line"><a id="l01509" name="l01509"></a><span class="lineno"> 1509</span>      <span class="stringliteral">&quot;not convertible to either of those types&quot;</span>);</div>
<div class="line"><a id="l01510" name="l01510"></a><span class="lineno"> 1510</span>    <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a> <span class="keyword">const</span> unused;</div>
<div class="line"><a id="l01511" name="l01511"></a><span class="lineno"> 1511</span>    <span class="keywordflow">return</span> unused;  <span class="comment">// Function must compile for static_assert to be triggered</span></div>
<div class="line"><a id="l01512" name="l01512"></a><span class="lineno"> 1512</span>  }</div>
</div>
<div class="line"><a id="l01513" name="l01513"></a><span class="lineno"> 1513</span> </div>
<div class="line"><a id="l01518" name="l01518"></a><span class="lineno"> 1518</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> M,</div>
<div class="line"><a id="l01519" name="l01519"></a><span class="lineno"> 1519</span>    <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l01520" name="l01520"></a><span class="lineno"> 1520</span>      !detail::has_message&lt;M&gt;::value</div>
<div class="line"><a id="l01521" name="l01521"></a><span class="lineno"> 1521</span>    , <span class="keywordtype">int</span>&gt;::type = 0&gt;</div>
<div class="foldopen" id="foldopen01522" data-start="{" data-end="}">
<div class="line"><a id="l01522" name="l01522"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1registered__string__in.html#abf90f8765081cee5f99d971271e29567"> 1522</a></span>  NVTX3_NO_DISCARD <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a> <span class="keyword">const</span>&amp; <a class="code hl_function" href="classnvtx3_1_1v1_1_1registered__string__in.html#abf90f8765081cee5f99d971271e29567">get</a>() noexcept</div>
<div class="line"><a id="l01523" name="l01523"></a><span class="lineno"> 1523</span>  {</div>
<div class="line"><a id="l01524" name="l01524"></a><span class="lineno"> 1524</span>    NVTX3_STATIC_ASSERT(detail::always_false&lt;M&gt;::value,</div>
<div class="line"><a id="l01525" name="l01525"></a><span class="lineno"> 1525</span>      <span class="stringliteral">&quot;Type used to register an NVTX string must contain a static constexpr member &quot;</span></div>
<div class="line"><a id="l01526" name="l01526"></a><span class="lineno"> 1526</span>      <span class="stringliteral">&quot;called &#39;message&#39; of type const char* or const wchar_t* -- &#39;message&#39; member &quot;</span></div>
<div class="line"><a id="l01527" name="l01527"></a><span class="lineno"> 1527</span>      <span class="stringliteral">&quot;is missing&quot;</span>);</div>
<div class="line"><a id="l01528" name="l01528"></a><span class="lineno"> 1528</span>    <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a> <span class="keyword">const</span> unused;</div>
<div class="line"><a id="l01529" name="l01529"></a><span class="lineno"> 1529</span>    <span class="keywordflow">return</span> unused;  <span class="comment">// Function must compile for static_assert to be triggered</span></div>
<div class="line"><a id="l01530" name="l01530"></a><span class="lineno"> 1530</span>  }</div>
</div>
<div class="line"><a id="l01531" name="l01531"></a><span class="lineno"> 1531</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l01532" name="l01532"></a><span class="lineno"> 1532</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> M&gt;</div>
<div class="line"><a id="l01533" name="l01533"></a><span class="lineno"> 1533</span>  NVTX3_NO_DISCARD <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a> <span class="keyword">const</span>&amp; get() noexcept</div>
<div class="line"><a id="l01534" name="l01534"></a><span class="lineno"> 1534</span>  {</div>
<div class="line"><a id="l01535" name="l01535"></a><span class="lineno"> 1535</span>    <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a> <span class="keyword">const</span> regstr(M::message);</div>
<div class="line"><a id="l01536" name="l01536"></a><span class="lineno"> 1536</span>    <span class="keywordflow">return</span> regstr;</div>
<div class="line"><a id="l01537" name="l01537"></a><span class="lineno"> 1537</span>  }</div>
<div class="line"><a id="l01538" name="l01538"></a><span class="lineno"> 1538</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l01539" name="l01539"></a><span class="lineno"> 1539</span> </div>
<div class="foldopen" id="foldopen01551" data-start="{" data-end="}">
<div class="line"><a id="l01551" name="l01551"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1registered__string__in.html#a059adcf011e73293c1d76a512d316524"> 1551</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1registered__string__in.html#a059adcf011e73293c1d76a512d316524">registered_string_in</a>(<span class="keywordtype">char</span> <span class="keyword">const</span>* msg) noexcept</div>
<div class="line"><a id="l01552" name="l01552"></a><span class="lineno"> 1552</span>    : handle_{nvtxDomainRegisterStringA(domain::get&lt;D&gt;(), msg)}</div>
<div class="line"><a id="l01553" name="l01553"></a><span class="lineno"> 1553</span>  {</div>
<div class="line"><a id="l01554" name="l01554"></a><span class="lineno"> 1554</span>  }</div>
</div>
<div class="line"><a id="l01555" name="l01555"></a><span class="lineno"> 1555</span> </div>
<div class="foldopen" id="foldopen01567" data-start="{" data-end="}">
<div class="line"><a id="l01567" name="l01567"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1registered__string__in.html#a7e8f0b775f6363e2187f50648c5a44f5"> 1567</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1registered__string__in.html#a7e8f0b775f6363e2187f50648c5a44f5">registered_string_in</a>(std::string <span class="keyword">const</span>&amp; msg) noexcept</div>
<div class="line"><a id="l01568" name="l01568"></a><span class="lineno"> 1568</span>    : <a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a>{msg.c_str()} {}</div>
</div>
<div class="line"><a id="l01569" name="l01569"></a><span class="lineno"> 1569</span> </div>
<div class="foldopen" id="foldopen01581" data-start="{" data-end="}">
<div class="line"><a id="l01581" name="l01581"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1registered__string__in.html#ab9d2c81308244bec4198167e2c8d3d4c"> 1581</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1registered__string__in.html#ab9d2c81308244bec4198167e2c8d3d4c">registered_string_in</a>(<span class="keywordtype">wchar_t</span> <span class="keyword">const</span>* msg) noexcept</div>
<div class="line"><a id="l01582" name="l01582"></a><span class="lineno"> 1582</span>    : handle_{nvtxDomainRegisterStringW(domain::get&lt;D&gt;(), msg)}</div>
<div class="line"><a id="l01583" name="l01583"></a><span class="lineno"> 1583</span>  {</div>
<div class="line"><a id="l01584" name="l01584"></a><span class="lineno"> 1584</span>  }</div>
</div>
<div class="line"><a id="l01585" name="l01585"></a><span class="lineno"> 1585</span> </div>
<div class="foldopen" id="foldopen01597" data-start="{" data-end="}">
<div class="line"><a id="l01597" name="l01597"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1registered__string__in.html#a90f6112510f0745a373a7fdb162b85de"> 1597</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1registered__string__in.html#a90f6112510f0745a373a7fdb162b85de">registered_string_in</a>(std::wstring <span class="keyword">const</span>&amp; msg) noexcept</div>
<div class="line"><a id="l01598" name="l01598"></a><span class="lineno"> 1598</span>    : <a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a>{msg.c_str()} {}</div>
</div>
<div class="line"><a id="l01599" name="l01599"></a><span class="lineno"> 1599</span> </div>
<div class="line"><a id="l01604" name="l01604"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1registered__string__in.html#a13d5f54f46e91073677fcfbe094dd261"> 1604</a></span>  nvtxStringHandle_t <a class="code hl_function" href="classnvtx3_1_1v1_1_1registered__string__in.html#a13d5f54f46e91073677fcfbe094dd261">get_handle</a>() const noexcept { <span class="keywordflow">return</span> handle_; }</div>
<div class="line"><a id="l01605" name="l01605"></a><span class="lineno"> 1605</span> </div>
<div class="line"><a id="l01606" name="l01606"></a><span class="lineno"> 1606</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l01607" name="l01607"></a><span class="lineno"> 1607</span>  <span class="comment">// Default constructor is only used internally for static_assert(false) cases.</span></div>
<div class="line"><a id="l01608" name="l01608"></a><span class="lineno"> 1608</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a>() noexcept {}</div>
<div class="line"><a id="l01609" name="l01609"></a><span class="lineno"> 1609</span><span class="keyword">public</span>:</div>
<div class="line"><a id="l01610" name="l01610"></a><span class="lineno"> 1610</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">~registered_string_in</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l01611" name="l01611"></a><span class="lineno"> 1611</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a> <span class="keyword">const</span>&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l01612" name="l01612"></a><span class="lineno"> 1612</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a>&amp; operator=(<a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a> <span class="keyword">const</span>&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l01613" name="l01613"></a><span class="lineno"> 1613</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a>&amp;&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l01614" name="l01614"></a><span class="lineno"> 1614</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a>&amp; operator=(<a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a>&amp;&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l01615" name="l01615"></a><span class="lineno"> 1615</span> </div>
<div class="line"><a id="l01616" name="l01616"></a><span class="lineno"> 1616</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l01617" name="l01617"></a><span class="lineno"> 1617</span>  nvtxStringHandle_t handle_{};  </div>
<div class="line"><a id="l01619" name="l01619"></a><span class="lineno"> 1619</span>};</div>
</div>
<div class="line"><a id="l01620" name="l01620"></a><span class="lineno"> 1620</span> </div>
<div class="line"><a id="l01625" name="l01625"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#a952cb27f352570421161c01763effe63"> 1625</a></span><span class="keyword">using </span><a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string</a> = <a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in&lt;domain::global&gt;</a>;</div>
<div class="line"><a id="l01626" name="l01626"></a><span class="lineno"> 1626</span> </div>
<div class="foldopen" id="foldopen01664" data-start="{" data-end="};">
<div class="line"><a id="l01664" name="l01664"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1message.html"> 1664</a></span><span class="keyword">class </span><a class="code hl_class" href="classnvtx3_1_1v1_1_1message.html">message</a> {</div>
<div class="line"><a id="l01665" name="l01665"></a><span class="lineno"> 1665</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l01666" name="l01666"></a><span class="lineno"> 1666</span>  <span class="keyword">using </span>value_type = nvtxMessageValue_t;</div>
<div class="line"><a id="l01667" name="l01667"></a><span class="lineno"> 1667</span> </div>
<div class="foldopen" id="foldopen01673" data-start="{" data-end="}">
<div class="line"><a id="l01673" name="l01673"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1message.html#abdbef47b3202d55a8b956da6b1296448"> 1673</a></span>  NVTX3_CONSTEXPR_IF_CPP14 <a class="code hl_function" href="classnvtx3_1_1v1_1_1message.html#abdbef47b3202d55a8b956da6b1296448">message</a>(<span class="keywordtype">char</span> <span class="keyword">const</span>* msg) noexcept : type_{NVTX_MESSAGE_TYPE_ASCII}</div>
<div class="line"><a id="l01674" name="l01674"></a><span class="lineno"> 1674</span>  {</div>
<div class="line"><a id="l01675" name="l01675"></a><span class="lineno"> 1675</span>    value_.ascii = msg;</div>
<div class="line"><a id="l01676" name="l01676"></a><span class="lineno"> 1676</span>  }</div>
</div>
<div class="line"><a id="l01677" name="l01677"></a><span class="lineno"> 1677</span> </div>
<div class="line"><a id="l01683" name="l01683"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1message.html#a0864f7bb6f147a8e45241883fc53d2bf"> 1683</a></span>  <a class="code hl_function" href="classnvtx3_1_1v1_1_1message.html#a0864f7bb6f147a8e45241883fc53d2bf">message</a>(std::string <span class="keyword">const</span>&amp; msg) noexcept : <a class="code hl_class" href="classnvtx3_1_1v1_1_1message.html">message</a>{msg.c_str()} {}</div>
<div class="line"><a id="l01684" name="l01684"></a><span class="lineno"> 1684</span> </div>
<div class="line"><a id="l01693" name="l01693"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1message.html#ad5fcc11a05dfb819fcf3238ae90131a0"> 1693</a></span>  <a class="code hl_function" href="classnvtx3_1_1v1_1_1message.html#ad5fcc11a05dfb819fcf3238ae90131a0">message</a>(std::string&amp;&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l01694" name="l01694"></a><span class="lineno"> 1694</span> </div>
<div class="foldopen" id="foldopen01700" data-start="{" data-end="}">
<div class="line"><a id="l01700" name="l01700"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1message.html#a15e5e0153c1ccb5db9db7ed35ed61481"> 1700</a></span>  NVTX3_CONSTEXPR_IF_CPP14 <a class="code hl_function" href="classnvtx3_1_1v1_1_1message.html#a15e5e0153c1ccb5db9db7ed35ed61481">message</a>(<span class="keywordtype">wchar_t</span> <span class="keyword">const</span>* msg) noexcept : type_{NVTX_MESSAGE_TYPE_UNICODE}</div>
<div class="line"><a id="l01701" name="l01701"></a><span class="lineno"> 1701</span>  {</div>
<div class="line"><a id="l01702" name="l01702"></a><span class="lineno"> 1702</span>    value_.unicode = msg;</div>
<div class="line"><a id="l01703" name="l01703"></a><span class="lineno"> 1703</span>  }</div>
</div>
<div class="line"><a id="l01704" name="l01704"></a><span class="lineno"> 1704</span> </div>
<div class="line"><a id="l01710" name="l01710"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1message.html#af152cd392b2bd13dd1fd00fbf2d29c09"> 1710</a></span>  <a class="code hl_function" href="classnvtx3_1_1v1_1_1message.html#af152cd392b2bd13dd1fd00fbf2d29c09">message</a>(std::wstring <span class="keyword">const</span>&amp; msg) noexcept : <a class="code hl_class" href="classnvtx3_1_1v1_1_1message.html">message</a>{msg.c_str()} {}</div>
<div class="line"><a id="l01711" name="l01711"></a><span class="lineno"> 1711</span> </div>
<div class="line"><a id="l01720" name="l01720"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1message.html#a3a8b73acb3c9cd2a5d78fe94efb0a9db"> 1720</a></span>  <a class="code hl_function" href="classnvtx3_1_1v1_1_1message.html#a3a8b73acb3c9cd2a5d78fe94efb0a9db">message</a>(std::wstring&amp;&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l01721" name="l01721"></a><span class="lineno"> 1721</span> </div>
<div class="line"><a id="l01730" name="l01730"></a><span class="lineno"> 1730</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> D&gt;</div>
<div class="foldopen" id="foldopen01731" data-start="{" data-end="}">
<div class="line"><a id="l01731" name="l01731"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1message.html#a2827347a64c6c91518f5191eade74054"> 1731</a></span>  NVTX3_CONSTEXPR_IF_CPP14 <a class="code hl_function" href="classnvtx3_1_1v1_1_1message.html#a2827347a64c6c91518f5191eade74054">message</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in&lt;D&gt;</a> <span class="keyword">const</span>&amp; msg) noexcept</div>
<div class="line"><a id="l01732" name="l01732"></a><span class="lineno"> 1732</span>    : type_{NVTX_MESSAGE_TYPE_REGISTERED}</div>
<div class="line"><a id="l01733" name="l01733"></a><span class="lineno"> 1733</span>  {</div>
<div class="line"><a id="l01734" name="l01734"></a><span class="lineno"> 1734</span>    value_.registered = msg.get_handle();</div>
<div class="line"><a id="l01735" name="l01735"></a><span class="lineno"> 1735</span>  }</div>
</div>
<div class="line"><a id="l01736" name="l01736"></a><span class="lineno"> 1736</span> </div>
<div class="foldopen" id="foldopen01743" data-start="{" data-end="}">
<div class="line"><a id="l01743" name="l01743"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1message.html#ad16d6a6518feb8f438faf0dbe052a4ee"> 1743</a></span>  <span class="keyword">constexpr</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1message.html#ad16d6a6518feb8f438faf0dbe052a4ee">message</a>(</div>
<div class="line"><a id="l01744" name="l01744"></a><span class="lineno"> 1744</span>    nvtxMessageType_t <span class="keyword">const</span>&amp; type,</div>
<div class="line"><a id="l01745" name="l01745"></a><span class="lineno"> 1745</span>    nvtxMessageValue_t <span class="keyword">const</span>&amp; value) noexcept</div>
<div class="line"><a id="l01746" name="l01746"></a><span class="lineno"> 1746</span>    : type_{type}, value_(value)</div>
<div class="line"><a id="l01747" name="l01747"></a><span class="lineno"> 1747</span>  {</div>
<div class="line"><a id="l01748" name="l01748"></a><span class="lineno"> 1748</span>  }</div>
</div>
<div class="line"><a id="l01749" name="l01749"></a><span class="lineno"> 1749</span> </div>
<div class="foldopen" id="foldopen01755" data-start="{" data-end="}">
<div class="line"><a id="l01755" name="l01755"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1message.html#ab0e7eae70ce91c6f8aa9be048fc146bd"> 1755</a></span>  NVTX3_CONSTEXPR_IF_CPP14 <a class="code hl_function" href="classnvtx3_1_1v1_1_1message.html#ab0e7eae70ce91c6f8aa9be048fc146bd">message</a>(nvtxStringHandle_t handle) noexcept</div>
<div class="line"><a id="l01756" name="l01756"></a><span class="lineno"> 1756</span>    : type_{NVTX_MESSAGE_TYPE_REGISTERED}</div>
<div class="line"><a id="l01757" name="l01757"></a><span class="lineno"> 1757</span>  {</div>
<div class="line"><a id="l01758" name="l01758"></a><span class="lineno"> 1758</span>    value_.registered = handle;</div>
<div class="line"><a id="l01759" name="l01759"></a><span class="lineno"> 1759</span>  }</div>
</div>
<div class="line"><a id="l01760" name="l01760"></a><span class="lineno"> 1760</span> </div>
<div class="line"><a id="l01765" name="l01765"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1message.html#a17d2eaf8f1c653ddf6237425833f3cfc"> 1765</a></span>  <span class="keyword">constexpr</span> value_type <a class="code hl_function" href="classnvtx3_1_1v1_1_1message.html#a17d2eaf8f1c653ddf6237425833f3cfc">get_value</a>() const noexcept { <span class="keywordflow">return</span> value_; }</div>
<div class="line"><a id="l01766" name="l01766"></a><span class="lineno"> 1766</span> </div>
<div class="line"><a id="l01771" name="l01771"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1message.html#a856a7186fd697a92b2a6699a448ffc45"> 1771</a></span>  <span class="keyword">constexpr</span> nvtxMessageType_t <a class="code hl_function" href="classnvtx3_1_1v1_1_1message.html#a856a7186fd697a92b2a6699a448ffc45">get_type</a>() const noexcept { <span class="keywordflow">return</span> type_; }</div>
<div class="line"><a id="l01772" name="l01772"></a><span class="lineno"> 1772</span> </div>
<div class="line"><a id="l01773" name="l01773"></a><span class="lineno"> 1773</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l01774" name="l01774"></a><span class="lineno"> 1774</span>  nvtxMessageType_t type_{};    </div>
<div class="line"><a id="l01775" name="l01775"></a><span class="lineno"> 1775</span>  nvtxMessageValue_t value_{};  </div>
<div class="line"><a id="l01776" name="l01776"></a><span class="lineno"> 1776</span>};</div>
</div>
<div class="line"><a id="l01777" name="l01777"></a><span class="lineno"> 1777</span> </div>
<div class="foldopen" id="foldopen01794" data-start="{" data-end="};">
<div class="line"><a id="l01794" name="l01794"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1payload.html"> 1794</a></span><span class="keyword">class </span><a class="code hl_class" href="classnvtx3_1_1v1_1_1payload.html">payload</a> {</div>
<div class="line"><a id="l01795" name="l01795"></a><span class="lineno"> 1795</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l01796" name="l01796"></a><span class="lineno"> 1796</span>  <span class="keyword">using </span>value_type = <span class="keyword">typename</span> nvtxEventAttributes_v2::payload_t;</div>
<div class="line"><a id="l01797" name="l01797"></a><span class="lineno"> 1797</span> </div>
<div class="foldopen" id="foldopen01803" data-start="{" data-end="}">
<div class="line"><a id="l01803" name="l01803"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1payload.html#a4eb0c1e4256db34fa68779a67d26e4ef"> 1803</a></span>  NVTX3_CONSTEXPR_IF_CPP14 <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1payload.html#a4eb0c1e4256db34fa68779a67d26e4ef">payload</a>(int64_t value) noexcept</div>
<div class="line"><a id="l01804" name="l01804"></a><span class="lineno"> 1804</span>    : type_{NVTX_PAYLOAD_TYPE_INT64}, value_{}</div>
<div class="line"><a id="l01805" name="l01805"></a><span class="lineno"> 1805</span>  {</div>
<div class="line"><a id="l01806" name="l01806"></a><span class="lineno"> 1806</span>    value_.llValue = value;</div>
<div class="line"><a id="l01807" name="l01807"></a><span class="lineno"> 1807</span>  }</div>
</div>
<div class="line"><a id="l01808" name="l01808"></a><span class="lineno"> 1808</span> </div>
<div class="foldopen" id="foldopen01814" data-start="{" data-end="}">
<div class="line"><a id="l01814" name="l01814"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1payload.html#a0351f31362bee4c7222bfa830dc46adf"> 1814</a></span>  NVTX3_CONSTEXPR_IF_CPP14 <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1payload.html#a0351f31362bee4c7222bfa830dc46adf">payload</a>(int32_t value) noexcept</div>
<div class="line"><a id="l01815" name="l01815"></a><span class="lineno"> 1815</span>    : type_{NVTX_PAYLOAD_TYPE_INT32}, value_{}</div>
<div class="line"><a id="l01816" name="l01816"></a><span class="lineno"> 1816</span>  {</div>
<div class="line"><a id="l01817" name="l01817"></a><span class="lineno"> 1817</span>    value_.iValue = value;</div>
<div class="line"><a id="l01818" name="l01818"></a><span class="lineno"> 1818</span>  }</div>
</div>
<div class="line"><a id="l01819" name="l01819"></a><span class="lineno"> 1819</span> </div>
<div class="foldopen" id="foldopen01825" data-start="{" data-end="}">
<div class="line"><a id="l01825" name="l01825"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1payload.html#afae6410eb17c40079fec46cfa6472ca8"> 1825</a></span>  NVTX3_CONSTEXPR_IF_CPP14 <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1payload.html#afae6410eb17c40079fec46cfa6472ca8">payload</a>(uint64_t value) noexcept</div>
<div class="line"><a id="l01826" name="l01826"></a><span class="lineno"> 1826</span>    : type_{NVTX_PAYLOAD_TYPE_UNSIGNED_INT64}, value_{}</div>
<div class="line"><a id="l01827" name="l01827"></a><span class="lineno"> 1827</span>  {</div>
<div class="line"><a id="l01828" name="l01828"></a><span class="lineno"> 1828</span>    value_.ullValue = value;</div>
<div class="line"><a id="l01829" name="l01829"></a><span class="lineno"> 1829</span>  }</div>
</div>
<div class="line"><a id="l01830" name="l01830"></a><span class="lineno"> 1830</span> </div>
<div class="foldopen" id="foldopen01836" data-start="{" data-end="}">
<div class="line"><a id="l01836" name="l01836"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1payload.html#a3755fd622f2552519d77f83d2f41950d"> 1836</a></span>  NVTX3_CONSTEXPR_IF_CPP14 <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1payload.html#a3755fd622f2552519d77f83d2f41950d">payload</a>(uint32_t value) noexcept</div>
<div class="line"><a id="l01837" name="l01837"></a><span class="lineno"> 1837</span>    : type_{NVTX_PAYLOAD_TYPE_UNSIGNED_INT32}, value_{}</div>
<div class="line"><a id="l01838" name="l01838"></a><span class="lineno"> 1838</span>  {</div>
<div class="line"><a id="l01839" name="l01839"></a><span class="lineno"> 1839</span>    value_.uiValue = value;</div>
<div class="line"><a id="l01840" name="l01840"></a><span class="lineno"> 1840</span>  }</div>
</div>
<div class="line"><a id="l01841" name="l01841"></a><span class="lineno"> 1841</span> </div>
<div class="foldopen" id="foldopen01848" data-start="{" data-end="}">
<div class="line"><a id="l01848" name="l01848"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1payload.html#a69cc4703669a5c973fcac94b998b1677"> 1848</a></span>  NVTX3_CONSTEXPR_IF_CPP14 <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1payload.html#a69cc4703669a5c973fcac94b998b1677">payload</a>(<span class="keywordtype">float</span> value) noexcept</div>
<div class="line"><a id="l01849" name="l01849"></a><span class="lineno"> 1849</span>    : type_{NVTX_PAYLOAD_TYPE_FLOAT}, value_{}</div>
<div class="line"><a id="l01850" name="l01850"></a><span class="lineno"> 1850</span>  {</div>
<div class="line"><a id="l01851" name="l01851"></a><span class="lineno"> 1851</span>    value_.fValue = value;</div>
<div class="line"><a id="l01852" name="l01852"></a><span class="lineno"> 1852</span>  }</div>
</div>
<div class="line"><a id="l01853" name="l01853"></a><span class="lineno"> 1853</span> </div>
<div class="foldopen" id="foldopen01860" data-start="{" data-end="}">
<div class="line"><a id="l01860" name="l01860"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1payload.html#ab2f4ae9a528d1ba77a99aa6a334123ed"> 1860</a></span>  NVTX3_CONSTEXPR_IF_CPP14 <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1payload.html#ab2f4ae9a528d1ba77a99aa6a334123ed">payload</a>(<span class="keywordtype">double</span> value) noexcept</div>
<div class="line"><a id="l01861" name="l01861"></a><span class="lineno"> 1861</span>    : type_{NVTX_PAYLOAD_TYPE_DOUBLE}, value_{}</div>
<div class="line"><a id="l01862" name="l01862"></a><span class="lineno"> 1862</span>  {</div>
<div class="line"><a id="l01863" name="l01863"></a><span class="lineno"> 1863</span>    value_.dValue = value;</div>
<div class="line"><a id="l01864" name="l01864"></a><span class="lineno"> 1864</span>  }</div>
</div>
<div class="line"><a id="l01865" name="l01865"></a><span class="lineno"> 1865</span> </div>
<div class="foldopen" id="foldopen01872" data-start="{" data-end="}">
<div class="line"><a id="l01872" name="l01872"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1payload.html#a2c3609dc8a8e6ce0ddfda5e96113ea53"> 1872</a></span>  <span class="keyword">constexpr</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1payload.html#a2c3609dc8a8e6ce0ddfda5e96113ea53">payload</a>(</div>
<div class="line"><a id="l01873" name="l01873"></a><span class="lineno"> 1873</span>    nvtxPayloadType_t <span class="keyword">const</span>&amp; type,</div>
<div class="line"><a id="l01874" name="l01874"></a><span class="lineno"> 1874</span>    value_type <span class="keyword">const</span>&amp; value) noexcept</div>
<div class="line"><a id="l01875" name="l01875"></a><span class="lineno"> 1875</span>    : type_{type}, value_(value)</div>
<div class="line"><a id="l01876" name="l01876"></a><span class="lineno"> 1876</span>  {</div>
<div class="line"><a id="l01877" name="l01877"></a><span class="lineno"> 1877</span>  }</div>
</div>
<div class="line"><a id="l01878" name="l01878"></a><span class="lineno"> 1878</span> </div>
<div class="line"><a id="l01883" name="l01883"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1payload.html#abb1094dc4fa3abc332ed18133fb2164e"> 1883</a></span>  <span class="keyword">constexpr</span> value_type <a class="code hl_function" href="classnvtx3_1_1v1_1_1payload.html#abb1094dc4fa3abc332ed18133fb2164e">get_value</a>() const noexcept { <span class="keywordflow">return</span> value_; }</div>
<div class="line"><a id="l01884" name="l01884"></a><span class="lineno"> 1884</span> </div>
<div class="line"><a id="l01889" name="l01889"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1payload.html#aeb3c21614c98acab62d0007175093172"> 1889</a></span>  <span class="keyword">constexpr</span> nvtxPayloadType_t <a class="code hl_function" href="classnvtx3_1_1v1_1_1payload.html#aeb3c21614c98acab62d0007175093172">get_type</a>() const noexcept { <span class="keywordflow">return</span> type_; }</div>
<div class="line"><a id="l01890" name="l01890"></a><span class="lineno"> 1890</span> </div>
<div class="line"><a id="l01891" name="l01891"></a><span class="lineno"> 1891</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l01892" name="l01892"></a><span class="lineno"> 1892</span>  nvtxPayloadType_t type_;  </div>
<div class="line"><a id="l01893" name="l01893"></a><span class="lineno"> 1893</span>  value_type value_;        </div>
<div class="line"><a id="l01894" name="l01894"></a><span class="lineno"> 1894</span>};</div>
</div>
<div class="line"><a id="l01895" name="l01895"></a><span class="lineno"> 1895</span> </div>
<div class="foldopen" id="foldopen01954" data-start="{" data-end="};">
<div class="line"><a id="l01954" name="l01954"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1event__attributes.html"> 1954</a></span><span class="keyword">class </span><a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a> {</div>
<div class="line"><a id="l01955" name="l01955"></a><span class="lineno"> 1955</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l01956" name="l01956"></a><span class="lineno"> 1956</span>  <span class="keyword">using </span>value_type = nvtxEventAttributes_t;</div>
<div class="line"><a id="l01957" name="l01957"></a><span class="lineno"> 1957</span> </div>
<div class="foldopen" id="foldopen01962" data-start="{" data-end="}">
<div class="line"><a id="l01962" name="l01962"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1event__attributes.html#af9b06fcd1d0bb4b8739009b3b00ef34d"> 1962</a></span>  <span class="keyword">constexpr</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1event__attributes.html#af9b06fcd1d0bb4b8739009b3b00ef34d">event_attributes</a>() noexcept</div>
<div class="line"><a id="l01963" name="l01963"></a><span class="lineno"> 1963</span>    : attributes_{</div>
<div class="line"><a id="l01964" name="l01964"></a><span class="lineno"> 1964</span>        NVTX_VERSION,                   <span class="comment">// version</span></div>
<div class="line"><a id="l01965" name="l01965"></a><span class="lineno"> 1965</span>        <span class="keyword">sizeof</span>(nvtxEventAttributes_t),  <span class="comment">// size</span></div>
<div class="line"><a id="l01966" name="l01966"></a><span class="lineno"> 1966</span>        0,                              <span class="comment">// category</span></div>
<div class="line"><a id="l01967" name="l01967"></a><span class="lineno"> 1967</span>        NVTX_COLOR_UNKNOWN,             <span class="comment">// color type</span></div>
<div class="line"><a id="l01968" name="l01968"></a><span class="lineno"> 1968</span>        0,                              <span class="comment">// color value</span></div>
<div class="line"><a id="l01969" name="l01969"></a><span class="lineno"> 1969</span>        NVTX_PAYLOAD_UNKNOWN,           <span class="comment">// payload type</span></div>
<div class="line"><a id="l01970" name="l01970"></a><span class="lineno"> 1970</span>        0,                              <span class="comment">// reserved 4B</span></div>
<div class="line"><a id="l01971" name="l01971"></a><span class="lineno"> 1971</span>        {0},                            <span class="comment">// payload value (union)</span></div>
<div class="line"><a id="l01972" name="l01972"></a><span class="lineno"> 1972</span>        NVTX_MESSAGE_UNKNOWN,           <span class="comment">// message type</span></div>
<div class="line"><a id="l01973" name="l01973"></a><span class="lineno"> 1973</span>        {<span class="keyword">nullptr</span>}                       <span class="comment">// message value (union)</span></div>
<div class="line"><a id="l01974" name="l01974"></a><span class="lineno"> 1974</span>      }</div>
<div class="line"><a id="l01975" name="l01975"></a><span class="lineno"> 1975</span>  {</div>
<div class="line"><a id="l01976" name="l01976"></a><span class="lineno"> 1976</span>  }</div>
</div>
<div class="line"><a id="l01977" name="l01977"></a><span class="lineno"> 1977</span> </div>
<div class="line"><a id="l01985" name="l01985"></a><span class="lineno"> 1985</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span>... Args&gt;</div>
<div class="foldopen" id="foldopen01986" data-start="{" data-end="}">
<div class="line"><a id="l01986" name="l01986"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1event__attributes.html#a27ef8784b11bb620cd597ea55a781e02"> 1986</a></span>  NVTX3_CONSTEXPR_IF_CPP14 <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1event__attributes.html#a27ef8784b11bb620cd597ea55a781e02">event_attributes</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1category.html">category</a> <span class="keyword">const</span>&amp; c, Args <span class="keyword">const</span>&amp;... args) noexcept</div>
<div class="line"><a id="l01987" name="l01987"></a><span class="lineno"> 1987</span>    : <a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a>(args...)</div>
<div class="line"><a id="l01988" name="l01988"></a><span class="lineno"> 1988</span>  {</div>
<div class="line"><a id="l01989" name="l01989"></a><span class="lineno"> 1989</span>    attributes_.category = c.get_id();</div>
<div class="line"><a id="l01990" name="l01990"></a><span class="lineno"> 1990</span>  }</div>
</div>
<div class="line"><a id="l01991" name="l01991"></a><span class="lineno"> 1991</span> </div>
<div class="line"><a id="l01999" name="l01999"></a><span class="lineno"> 1999</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span>... Args&gt;</div>
<div class="foldopen" id="foldopen02000" data-start="{" data-end="}">
<div class="line"><a id="l02000" name="l02000"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1event__attributes.html#a14e581407cea05235f0f814f4043c656"> 2000</a></span>  NVTX3_CONSTEXPR_IF_CPP14 <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1event__attributes.html#a14e581407cea05235f0f814f4043c656">event_attributes</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1color.html">color</a> <span class="keyword">const</span>&amp; c, Args <span class="keyword">const</span>&amp;... args) noexcept</div>
<div class="line"><a id="l02001" name="l02001"></a><span class="lineno"> 2001</span>    : <a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a>(args...)</div>
<div class="line"><a id="l02002" name="l02002"></a><span class="lineno"> 2002</span>  {</div>
<div class="line"><a id="l02003" name="l02003"></a><span class="lineno"> 2003</span>    attributes_.color     = c.get_value();</div>
<div class="line"><a id="l02004" name="l02004"></a><span class="lineno"> 2004</span>    attributes_.colorType = c.get_type();</div>
<div class="line"><a id="l02005" name="l02005"></a><span class="lineno"> 2005</span>  }</div>
</div>
<div class="line"><a id="l02006" name="l02006"></a><span class="lineno"> 2006</span> </div>
<div class="line"><a id="l02014" name="l02014"></a><span class="lineno"> 2014</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span>... Args&gt;</div>
<div class="foldopen" id="foldopen02015" data-start="{" data-end="}">
<div class="line"><a id="l02015" name="l02015"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1event__attributes.html#ac16fc2b8249f503ff89ee14a9fdb63fd"> 2015</a></span>  NVTX3_CONSTEXPR_IF_CPP14 <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1event__attributes.html#ac16fc2b8249f503ff89ee14a9fdb63fd">event_attributes</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1payload.html">payload</a> <span class="keyword">const</span>&amp; p, Args <span class="keyword">const</span>&amp;... args) noexcept</div>
<div class="line"><a id="l02016" name="l02016"></a><span class="lineno"> 2016</span>    : <a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a>(args...)</div>
<div class="line"><a id="l02017" name="l02017"></a><span class="lineno"> 2017</span>  {</div>
<div class="line"><a id="l02018" name="l02018"></a><span class="lineno"> 2018</span>    attributes_.payload     = p.get_value();</div>
<div class="line"><a id="l02019" name="l02019"></a><span class="lineno"> 2019</span>    attributes_.payloadType = p.get_type();</div>
<div class="line"><a id="l02020" name="l02020"></a><span class="lineno"> 2020</span>  }</div>
</div>
<div class="line"><a id="l02021" name="l02021"></a><span class="lineno"> 2021</span> </div>
<div class="line"><a id="l02029" name="l02029"></a><span class="lineno"> 2029</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span>... Args&gt;</div>
<div class="foldopen" id="foldopen02030" data-start="{" data-end="}">
<div class="line"><a id="l02030" name="l02030"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1event__attributes.html#acccdd768a4fbe2234d151e8a8443f44f"> 2030</a></span>  NVTX3_CONSTEXPR_IF_CPP14 <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1event__attributes.html#acccdd768a4fbe2234d151e8a8443f44f">event_attributes</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1message.html">message</a> <span class="keyword">const</span>&amp; m, Args <span class="keyword">const</span>&amp;... args) noexcept</div>
<div class="line"><a id="l02031" name="l02031"></a><span class="lineno"> 2031</span>    : <a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a>(args...)</div>
<div class="line"><a id="l02032" name="l02032"></a><span class="lineno"> 2032</span>  {</div>
<div class="line"><a id="l02033" name="l02033"></a><span class="lineno"> 2033</span>    attributes_.message     = m.get_value();</div>
<div class="line"><a id="l02034" name="l02034"></a><span class="lineno"> 2034</span>    attributes_.messageType = m.get_type();</div>
<div class="line"><a id="l02035" name="l02035"></a><span class="lineno"> 2035</span>  }</div>
</div>
<div class="line"><a id="l02036" name="l02036"></a><span class="lineno"> 2036</span> </div>
<div class="line"><a id="l02037" name="l02037"></a><span class="lineno"> 2037</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">~event_attributes</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l02038" name="l02038"></a><span class="lineno"> 2038</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a> <span class="keyword">const</span>&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l02039" name="l02039"></a><span class="lineno"> 2039</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a>&amp; operator=(<a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a> <span class="keyword">const</span>&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l02040" name="l02040"></a><span class="lineno"> 2040</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a>&amp;&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l02041" name="l02041"></a><span class="lineno"> 2041</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a>&amp; operator=(<a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a>&amp;&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l02042" name="l02042"></a><span class="lineno"> 2042</span> </div>
<div class="line"><a id="l02047" name="l02047"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1event__attributes.html#aa060dd3c07034ccef18c2b48ec99f90c"> 2047</a></span>  <span class="keyword">constexpr</span> value_type <span class="keyword">const</span>* <a class="code hl_function" href="classnvtx3_1_1v1_1_1event__attributes.html#aa060dd3c07034ccef18c2b48ec99f90c">get</a>() const noexcept { <span class="keywordflow">return</span> &amp;attributes_; }</div>
<div class="line"><a id="l02048" name="l02048"></a><span class="lineno"> 2048</span> </div>
<div class="line"><a id="l02049" name="l02049"></a><span class="lineno"> 2049</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l02050" name="l02050"></a><span class="lineno"> 2050</span>  value_type attributes_{};  </div>
<div class="line"><a id="l02051" name="l02051"></a><span class="lineno"> 2051</span>};</div>
</div>
<div class="line"><a id="l02052" name="l02052"></a><span class="lineno"> 2052</span> </div>
<div class="line"><a id="l02100" name="l02100"></a><span class="lineno"> 2100</span><span class="keyword">template</span> &lt;<span class="keyword">class</span> D = domain::global&gt;</div>
<div class="foldopen" id="foldopen02101" data-start="{" data-end="};">
<div class="line"><a id="l02101" name="l02101"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1scoped__range__in.html"> 2101</a></span><span class="keyword">class </span>NVTX3_MAYBE_UNUSED <a class="code hl_class" href="classnvtx3_1_1v1_1_1scoped__range__in.html">scoped_range_in</a> {</div>
<div class="line"><a id="l02102" name="l02102"></a><span class="lineno"> 2102</span> <span class="keyword">public</span>:</div>
<div class="foldopen" id="foldopen02117" data-start="{" data-end="}">
<div class="line"><a id="l02117" name="l02117"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1scoped__range__in.html#a25eff24202b7021ced3481b29c1768c8"> 2117</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1scoped__range__in.html#a25eff24202b7021ced3481b29c1768c8">scoped_range_in</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a> <span class="keyword">const</span>&amp; attr) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l02118" name="l02118"></a><span class="lineno"> 2118</span>  {</div>
<div class="line"><a id="l02119" name="l02119"></a><span class="lineno"> 2119</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="line"><a id="l02120" name="l02120"></a><span class="lineno"> 2120</span>    nvtxDomainRangePushEx(domain::get&lt;D&gt;(), attr.get());</div>
<div class="line"><a id="l02121" name="l02121"></a><span class="lineno"> 2121</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l02122" name="l02122"></a><span class="lineno"> 2122</span>    (void)attr;</div>
<div class="line"><a id="l02123" name="l02123"></a><span class="lineno"> 2123</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02124" name="l02124"></a><span class="lineno"> 2124</span>  }</div>
</div>
<div class="line"><a id="l02125" name="l02125"></a><span class="lineno"> 2125</span> </div>
<div class="line"><a id="l02146" name="l02146"></a><span class="lineno"> 2146</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span>... Args&gt;</div>
<div class="foldopen" id="foldopen02147" data-start="{" data-end="}">
<div class="line"><a id="l02147" name="l02147"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1scoped__range__in.html#a53b3c3d95b29dfc31db2df290804df65"> 2147</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1scoped__range__in.html#a53b3c3d95b29dfc31db2df290804df65">scoped_range_in</a>(Args <span class="keyword">const</span>&amp;... args) noexcept</div>
<div class="line"><a id="l02148" name="l02148"></a><span class="lineno"> 2148</span>    : <a class="code hl_class" href="classnvtx3_1_1v1_1_1scoped__range__in.html">scoped_range_in</a>{<a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a>{args...}}</div>
<div class="line"><a id="l02149" name="l02149"></a><span class="lineno"> 2149</span>  {</div>
<div class="line"><a id="l02150" name="l02150"></a><span class="lineno"> 2150</span>  }</div>
</div>
<div class="line"><a id="l02151" name="l02151"></a><span class="lineno"> 2151</span> </div>
<div class="line"><a id="l02157" name="l02157"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1scoped__range__in.html#a72417f5a5f0ecf2b67551880bdd28955"> 2157</a></span>  <a class="code hl_function" href="classnvtx3_1_1v1_1_1scoped__range__in.html#a72417f5a5f0ecf2b67551880bdd28955">scoped_range_in</a>() noexcept : <a class="code hl_class" href="classnvtx3_1_1v1_1_1scoped__range__in.html">scoped_range_in</a>{<a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a>{}} {}</div>
<div class="line"><a id="l02158" name="l02158"></a><span class="lineno"> 2158</span> </div>
<div class="line"><a id="l02165" name="l02165"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1scoped__range__in.html#aaa2e0c47375a578c7f772501905b8d22"> 2165</a></span>  <span class="keywordtype">void</span>* <span class="keyword">operator</span> <span class="keyword">new</span>(std::size_t) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l02166" name="l02166"></a><span class="lineno"> 2166</span> </div>
<div class="line"><a id="l02167" name="l02167"></a><span class="lineno"> 2167</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1scoped__range__in.html">scoped_range_in</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1scoped__range__in.html">scoped_range_in</a> <span class="keyword">const</span>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l02168" name="l02168"></a><span class="lineno"> 2168</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1scoped__range__in.html">scoped_range_in</a>&amp; operator=(<a class="code hl_class" href="classnvtx3_1_1v1_1_1scoped__range__in.html">scoped_range_in</a> <span class="keyword">const</span>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l02169" name="l02169"></a><span class="lineno"> 2169</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1scoped__range__in.html">scoped_range_in</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1scoped__range__in.html">scoped_range_in</a>&amp;&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l02170" name="l02170"></a><span class="lineno"> 2170</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1scoped__range__in.html">scoped_range_in</a>&amp; operator=(<a class="code hl_class" href="classnvtx3_1_1v1_1_1scoped__range__in.html">scoped_range_in</a>&amp;&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l02171" name="l02171"></a><span class="lineno"> 2171</span> </div>
<div class="foldopen" id="foldopen02175" data-start="{" data-end="}">
<div class="line"><a id="l02175" name="l02175"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1scoped__range__in.html#aebf31fd1548c4bf5196332db9ee90fb1"> 2175</a></span>  <a class="code hl_function" href="classnvtx3_1_1v1_1_1scoped__range__in.html#aebf31fd1548c4bf5196332db9ee90fb1">~scoped_range_in</a>() noexcept</div>
<div class="line"><a id="l02176" name="l02176"></a><span class="lineno"> 2176</span>  {</div>
<div class="line"><a id="l02177" name="l02177"></a><span class="lineno"> 2177</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="line"><a id="l02178" name="l02178"></a><span class="lineno"> 2178</span>    nvtxDomainRangePop(domain::get&lt;D&gt;());</div>
<div class="line"><a id="l02179" name="l02179"></a><span class="lineno"> 2179</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02180" name="l02180"></a><span class="lineno"> 2180</span>  }</div>
</div>
<div class="line"><a id="l02181" name="l02181"></a><span class="lineno"> 2181</span>};</div>
</div>
<div class="line"><a id="l02182" name="l02182"></a><span class="lineno"> 2182</span> </div>
<div class="line"><a id="l02187" name="l02187"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#a8e124f3d438e512b586415f1ac2b9677"> 2187</a></span><span class="keyword">using </span><a class="code hl_class" href="classnvtx3_1_1v1_1_1scoped__range__in.html">scoped_range</a> = <a class="code hl_class" href="classnvtx3_1_1v1_1_1scoped__range__in.html">scoped_range_in&lt;domain::global&gt;</a>;</div>
<div class="line"><a id="l02188" name="l02188"></a><span class="lineno"> 2188</span> </div>
<div class="line"><a id="l02189" name="l02189"></a><span class="lineno"> 2189</span><span class="keyword">namespace </span>detail {</div>
<div class="line"><a id="l02190" name="l02190"></a><span class="lineno"> 2190</span> </div>
<div class="line"><a id="l02192" name="l02192"></a><span class="lineno"> 2192</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> D = domain::global&gt;</div>
<div class="line"><a id="l02193" name="l02193"></a><span class="lineno"> 2193</span><span class="keyword">class </span>NVTX3_MAYBE_UNUSED optional_scoped_range_in</div>
<div class="line"><a id="l02194" name="l02194"></a><span class="lineno"> 2194</span>{</div>
<div class="line"><a id="l02195" name="l02195"></a><span class="lineno"> 2195</span><span class="keyword">public</span>:</div>
<div class="line"><a id="l02196" name="l02196"></a><span class="lineno"> 2196</span>  optional_scoped_range_in() = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l02197" name="l02197"></a><span class="lineno"> 2197</span> </div>
<div class="line"><a id="l02198" name="l02198"></a><span class="lineno"> 2198</span>  <span class="keywordtype">void</span> begin(<a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a> <span class="keyword">const</span>&amp; attr) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l02199" name="l02199"></a><span class="lineno"> 2199</span>  {</div>
<div class="line"><a id="l02200" name="l02200"></a><span class="lineno"> 2200</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="line"><a id="l02201" name="l02201"></a><span class="lineno"> 2201</span>    <span class="comment">// This class is not meant to be part of the public NVTX C++ API and should</span></div>
<div class="line"><a id="l02202" name="l02202"></a><span class="lineno"> 2202</span>    <span class="comment">// only be used in the `NVTX3_FUNC_RANGE_IF` and `NVTX3_FUNC_RANGE_IF_IN`</span></div>
<div class="line"><a id="l02203" name="l02203"></a><span class="lineno"> 2203</span>    <span class="comment">// macros. However, to prevent developers from misusing this class, make</span></div>
<div class="line"><a id="l02204" name="l02204"></a><span class="lineno"> 2204</span>    <span class="comment">// sure to not start multiple ranges.</span></div>
<div class="line"><a id="l02205" name="l02205"></a><span class="lineno"> 2205</span>    <span class="keywordflow">if</span> (initialized) { <span class="keywordflow">return</span>; }</div>
<div class="line"><a id="l02206" name="l02206"></a><span class="lineno"> 2206</span> </div>
<div class="line"><a id="l02207" name="l02207"></a><span class="lineno"> 2207</span>    nvtxDomainRangePushEx(domain::get&lt;D&gt;(), attr.<a class="code hl_function" href="classnvtx3_1_1v1_1_1event__attributes.html#aa060dd3c07034ccef18c2b48ec99f90c">get</a>());</div>
<div class="line"><a id="l02208" name="l02208"></a><span class="lineno"> 2208</span>    initialized = <span class="keyword">true</span>;</div>
<div class="line"><a id="l02209" name="l02209"></a><span class="lineno"> 2209</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l02210" name="l02210"></a><span class="lineno"> 2210</span>    (void)attr;</div>
<div class="line"><a id="l02211" name="l02211"></a><span class="lineno"> 2211</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02212" name="l02212"></a><span class="lineno"> 2212</span>  }</div>
<div class="line"><a id="l02213" name="l02213"></a><span class="lineno"> 2213</span> </div>
<div class="line"><a id="l02214" name="l02214"></a><span class="lineno"> 2214</span>  ~optional_scoped_range_in() <span class="keyword">noexcept</span></div>
<div class="line"><a id="l02215" name="l02215"></a><span class="lineno"> 2215</span>  {</div>
<div class="line"><a id="l02216" name="l02216"></a><span class="lineno"> 2216</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="line"><a id="l02217" name="l02217"></a><span class="lineno"> 2217</span>    <span class="keywordflow">if</span> (initialized) { nvtxDomainRangePop(domain::get&lt;D&gt;()); }</div>
<div class="line"><a id="l02218" name="l02218"></a><span class="lineno"> 2218</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02219" name="l02219"></a><span class="lineno"> 2219</span>  }</div>
<div class="line"><a id="l02220" name="l02220"></a><span class="lineno"> 2220</span> </div>
<div class="line"><a id="l02221" name="l02221"></a><span class="lineno"> 2221</span>  <span class="keywordtype">void</span>* <span class="keyword">operator</span> <span class="keyword">new</span>(std::size_t) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l02222" name="l02222"></a><span class="lineno"> 2222</span>  optional_scoped_range_in(optional_scoped_range_in <span class="keyword">const</span>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l02223" name="l02223"></a><span class="lineno"> 2223</span>  optional_scoped_range_in&amp; operator=(optional_scoped_range_in <span class="keyword">const</span>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l02224" name="l02224"></a><span class="lineno"> 2224</span>  optional_scoped_range_in(optional_scoped_range_in&amp;&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l02225" name="l02225"></a><span class="lineno"> 2225</span>  optional_scoped_range_in&amp; operator=(optional_scoped_range_in&amp;&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l02226" name="l02226"></a><span class="lineno"> 2226</span> </div>
<div class="line"><a id="l02227" name="l02227"></a><span class="lineno"> 2227</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l02228" name="l02228"></a><span class="lineno"> 2228</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="line"><a id="l02229" name="l02229"></a><span class="lineno"> 2229</span>  <span class="keywordtype">bool</span> initialized = <span class="keyword">false</span>;</div>
<div class="line"><a id="l02230" name="l02230"></a><span class="lineno"> 2230</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02231" name="l02231"></a><span class="lineno"> 2231</span>};</div>
<div class="line"><a id="l02233" name="l02233"></a><span class="lineno"> 2233</span> </div>
<div class="line"><a id="l02234" name="l02234"></a><span class="lineno"> 2234</span>} <span class="comment">// namespace detail</span></div>
<div class="line"><a id="l02235" name="l02235"></a><span class="lineno"> 2235</span> </div>
<div class="foldopen" id="foldopen02242" data-start="{" data-end="};">
<div class="line"><a id="l02242" name="l02242"></a><span class="lineno"><a class="line" href="structnvtx3_1_1v1_1_1range__handle.html"> 2242</a></span><span class="keyword">struct </span><a class="code hl_struct" href="structnvtx3_1_1v1_1_1range__handle.html">range_handle</a> {</div>
<div class="line"><a id="l02244" name="l02244"></a><span class="lineno"><a class="line" href="structnvtx3_1_1v1_1_1range__handle.html#a77be25af5cf21fde96c18bf30727f109"> 2244</a></span>  <span class="keyword">using </span><a class="code hl_typedef" href="structnvtx3_1_1v1_1_1range__handle.html#a77be25af5cf21fde96c18bf30727f109">value_type</a> = nvtxRangeId_t;</div>
<div class="line"><a id="l02245" name="l02245"></a><span class="lineno"> 2245</span> </div>
<div class="line"><a id="l02246" name="l02246"></a><span class="lineno"> 2246</span> </div>
<div class="line"><a id="l02251" name="l02251"></a><span class="lineno"><a class="line" href="structnvtx3_1_1v1_1_1range__handle.html#a268da1820c8b8c63210123f0eca23b4d"> 2251</a></span>  <span class="keyword">constexpr</span> <span class="keyword">explicit</span> <a class="code hl_function" href="structnvtx3_1_1v1_1_1range__handle.html#a268da1820c8b8c63210123f0eca23b4d">range_handle</a>(<a class="code hl_typedef" href="structnvtx3_1_1v1_1_1range__handle.html#a77be25af5cf21fde96c18bf30727f109">value_type</a> <span class="keywordtype">id</span>) noexcept : _range_id{<span class="keywordtype">id</span>} {}</div>
<div class="line"><a id="l02252" name="l02252"></a><span class="lineno"> 2252</span> </div>
<div class="line"><a id="l02260" name="l02260"></a><span class="lineno"><a class="line" href="structnvtx3_1_1v1_1_1range__handle.html#a5d0f33132aa6782d681656040dd6ce7f"> 2260</a></span>  <span class="keyword">constexpr</span> <a class="code hl_function" href="structnvtx3_1_1v1_1_1range__handle.html#a5d0f33132aa6782d681656040dd6ce7f">range_handle</a>() noexcept = default;</div>
<div class="line"><a id="l02261" name="l02261"></a><span class="lineno"> 2261</span> </div>
<div class="line"><a id="l02273" name="l02273"></a><span class="lineno"><a class="line" href="structnvtx3_1_1v1_1_1range__handle.html#ab622758fb9654b36c018b0c9aa91679a"> 2273</a></span>  constexpr explicit operator <span class="keywordtype">bool</span>() const noexcept { <span class="keywordflow">return</span> get_value() != null_range_id; }</div>
<div class="line"><a id="l02274" name="l02274"></a><span class="lineno"> 2274</span> </div>
<div class="line"><a id="l02281" name="l02281"></a><span class="lineno"><a class="line" href="structnvtx3_1_1v1_1_1range__handle.html#acaef1aa87e8c7ce936b0e93040b8ad3a"> 2281</a></span>  <span class="keyword">constexpr</span> <a class="code hl_function" href="structnvtx3_1_1v1_1_1range__handle.html#acaef1aa87e8c7ce936b0e93040b8ad3a">range_handle</a>(std::nullptr_t) <span class="keyword">noexcept</span> {}</div>
<div class="line"><a id="l02282" name="l02282"></a><span class="lineno"> 2282</span> </div>
<div class="line"><a id="l02288" name="l02288"></a><span class="lineno"><a class="line" href="structnvtx3_1_1v1_1_1range__handle.html#a3919493cff16228eed36c9a3c3f84de6"> 2288</a></span>  <span class="keyword">constexpr</span> <a class="code hl_typedef" href="structnvtx3_1_1v1_1_1range__handle.html#a77be25af5cf21fde96c18bf30727f109">value_type</a> <a class="code hl_function" href="structnvtx3_1_1v1_1_1range__handle.html#a3919493cff16228eed36c9a3c3f84de6">get_value</a>() const noexcept { <span class="keywordflow">return</span> _range_id; }</div>
<div class="line"><a id="l02289" name="l02289"></a><span class="lineno"> 2289</span> </div>
<div class="line"><a id="l02290" name="l02290"></a><span class="lineno"> 2290</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l02292" name="l02292"></a><span class="lineno"> 2292</span>  <span class="keyword">static</span> <span class="keyword">constexpr</span> value_type null_range_id = nvtxRangeId_t{0};</div>
<div class="line"><a id="l02293" name="l02293"></a><span class="lineno"> 2293</span> </div>
<div class="line"><a id="l02294" name="l02294"></a><span class="lineno"> 2294</span>  value_type _range_id{null_range_id};  </div>
<div class="line"><a id="l02295" name="l02295"></a><span class="lineno"> 2295</span>};</div>
</div>
<div class="line"><a id="l02296" name="l02296"></a><span class="lineno"> 2296</span> </div>
<div class="foldopen" id="foldopen02303" data-start="{" data-end="}">
<div class="line"><a id="l02303" name="l02303"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#aa2016d0df543887a838402751356433d"> 2303</a></span><span class="keyword">inline</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="nvtx3_8hpp.html#aa2016d0df543887a838402751356433d">operator==</a>(<a class="code hl_struct" href="structnvtx3_1_1v1_1_1range__handle.html">range_handle</a> lhs, <a class="code hl_struct" href="structnvtx3_1_1v1_1_1range__handle.html">range_handle</a> rhs) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l02304" name="l02304"></a><span class="lineno"> 2304</span>{</div>
<div class="line"><a id="l02305" name="l02305"></a><span class="lineno"> 2305</span>  <span class="keywordflow">return</span> lhs.get_value() == rhs.get_value();</div>
<div class="line"><a id="l02306" name="l02306"></a><span class="lineno"> 2306</span>}</div>
</div>
<div class="line"><a id="l02307" name="l02307"></a><span class="lineno"> 2307</span> </div>
<div class="line"><a id="l02314" name="l02314"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#aaaae235fe6980a2ac95eb4f35d6e9ad1"> 2314</a></span><span class="keyword">inline</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="nvtx3_8hpp.html#aaaae235fe6980a2ac95eb4f35d6e9ad1">operator!=</a>(<a class="code hl_struct" href="structnvtx3_1_1v1_1_1range__handle.html">range_handle</a> lhs, <a class="code hl_struct" href="structnvtx3_1_1v1_1_1range__handle.html">range_handle</a> rhs) <span class="keyword">noexcept</span> { <span class="keywordflow">return</span> !(lhs == rhs); }</div>
<div class="line"><a id="l02315" name="l02315"></a><span class="lineno"> 2315</span> </div>
<div class="line"><a id="l02345" name="l02345"></a><span class="lineno"> 2345</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> D = domain::global&gt;</div>
<div class="foldopen" id="foldopen02346" data-start="{" data-end="}">
<div class="line"><a id="l02346" name="l02346"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#a58d393b13ffc2fe5f44b0171be0bec23"> 2346</a></span>NVTX3_NO_DISCARD <span class="keyword">inline</span> <a class="code hl_struct" href="structnvtx3_1_1v1_1_1range__handle.html">range_handle</a> <a class="code hl_function" href="nvtx3_8hpp.html#a58d393b13ffc2fe5f44b0171be0bec23">start_range_in</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a> <span class="keyword">const</span>&amp; attr) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l02347" name="l02347"></a><span class="lineno"> 2347</span>{</div>
<div class="line"><a id="l02348" name="l02348"></a><span class="lineno"> 2348</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="line"><a id="l02349" name="l02349"></a><span class="lineno"> 2349</span>  <span class="keywordflow">return</span> <a class="code hl_struct" href="structnvtx3_1_1v1_1_1range__handle.html">range_handle</a>{nvtxDomainRangeStartEx(domain::get&lt;D&gt;(), attr.get())};</div>
<div class="line"><a id="l02350" name="l02350"></a><span class="lineno"> 2350</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l02351" name="l02351"></a><span class="lineno"> 2351</span>  (void)attr;</div>
<div class="line"><a id="l02352" name="l02352"></a><span class="lineno"> 2352</span>  <span class="keywordflow">return</span> {};</div>
<div class="line"><a id="l02353" name="l02353"></a><span class="lineno"> 2353</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02354" name="l02354"></a><span class="lineno"> 2354</span>}</div>
</div>
<div class="line"><a id="l02355" name="l02355"></a><span class="lineno"> 2355</span> </div>
<div class="line"><a id="l02386" name="l02386"></a><span class="lineno"> 2386</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> D = domain::global, <span class="keyword">typename</span>... Args&gt;</div>
<div class="foldopen" id="foldopen02387" data-start="{" data-end="}">
<div class="line"><a id="l02387" name="l02387"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#a277b16a1aadc6e8b40e720847b5fb124"> 2387</a></span>NVTX3_NO_DISCARD <span class="keyword">inline</span> <a class="code hl_struct" href="structnvtx3_1_1v1_1_1range__handle.html">range_handle</a> <a class="code hl_function" href="nvtx3_8hpp.html#a58d393b13ffc2fe5f44b0171be0bec23">start_range_in</a>(Args <span class="keyword">const</span>&amp;... args) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l02388" name="l02388"></a><span class="lineno"> 2388</span>{</div>
<div class="line"><a id="l02389" name="l02389"></a><span class="lineno"> 2389</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="line"><a id="l02390" name="l02390"></a><span class="lineno"> 2390</span>  <span class="keywordflow">return</span> start_range_in&lt;D&gt;(<a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a>{args...});</div>
<div class="line"><a id="l02391" name="l02391"></a><span class="lineno"> 2391</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l02392" name="l02392"></a><span class="lineno"> 2392</span>  detail::silence_unused(args...);</div>
<div class="line"><a id="l02393" name="l02393"></a><span class="lineno"> 2393</span>  <span class="keywordflow">return</span> {};</div>
<div class="line"><a id="l02394" name="l02394"></a><span class="lineno"> 2394</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02395" name="l02395"></a><span class="lineno"> 2395</span>}</div>
</div>
<div class="line"><a id="l02396" name="l02396"></a><span class="lineno"> 2396</span> </div>
<div class="foldopen" id="foldopen02423" data-start="{" data-end="}">
<div class="line"><a id="l02423" name="l02423"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#a944d0beb92c70e5d3842c5dc4fca81ec"> 2423</a></span>NVTX3_NO_DISCARD <span class="keyword">inline</span> <a class="code hl_struct" href="structnvtx3_1_1v1_1_1range__handle.html">range_handle</a> <a class="code hl_function" href="nvtx3_8hpp.html#a944d0beb92c70e5d3842c5dc4fca81ec">start_range</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a> <span class="keyword">const</span>&amp; attr) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l02424" name="l02424"></a><span class="lineno"> 2424</span>{</div>
<div class="line"><a id="l02425" name="l02425"></a><span class="lineno"> 2425</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="line"><a id="l02426" name="l02426"></a><span class="lineno"> 2426</span>  <span class="keywordflow">return</span> start_range_in&lt;domain::global&gt;(attr);</div>
<div class="line"><a id="l02427" name="l02427"></a><span class="lineno"> 2427</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l02428" name="l02428"></a><span class="lineno"> 2428</span>  (void)attr;</div>
<div class="line"><a id="l02429" name="l02429"></a><span class="lineno"> 2429</span>  <span class="keywordflow">return</span> {};</div>
<div class="line"><a id="l02430" name="l02430"></a><span class="lineno"> 2430</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02431" name="l02431"></a><span class="lineno"> 2431</span>}</div>
</div>
<div class="line"><a id="l02432" name="l02432"></a><span class="lineno"> 2432</span> </div>
<div class="line"><a id="l02460" name="l02460"></a><span class="lineno"> 2460</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span>... Args&gt;</div>
<div class="foldopen" id="foldopen02461" data-start="{" data-end="}">
<div class="line"><a id="l02461" name="l02461"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#a7484c890617a91bbbb998b793b59584e"> 2461</a></span>NVTX3_NO_DISCARD <span class="keyword">inline</span> <a class="code hl_struct" href="structnvtx3_1_1v1_1_1range__handle.html">range_handle</a> <a class="code hl_function" href="nvtx3_8hpp.html#a944d0beb92c70e5d3842c5dc4fca81ec">start_range</a>(Args <span class="keyword">const</span>&amp;... args) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l02462" name="l02462"></a><span class="lineno"> 2462</span>{</div>
<div class="line"><a id="l02463" name="l02463"></a><span class="lineno"> 2463</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="line"><a id="l02464" name="l02464"></a><span class="lineno"> 2464</span>  <span class="keywordflow">return</span> start_range_in&lt;domain::global&gt;(args...);</div>
<div class="line"><a id="l02465" name="l02465"></a><span class="lineno"> 2465</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l02466" name="l02466"></a><span class="lineno"> 2466</span>  detail::silence_unused(args...);</div>
<div class="line"><a id="l02467" name="l02467"></a><span class="lineno"> 2467</span>  <span class="keywordflow">return</span> {};</div>
<div class="line"><a id="l02468" name="l02468"></a><span class="lineno"> 2468</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02469" name="l02469"></a><span class="lineno"> 2469</span>}</div>
</div>
<div class="line"><a id="l02470" name="l02470"></a><span class="lineno"> 2470</span> </div>
<div class="line"><a id="l02486" name="l02486"></a><span class="lineno"> 2486</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> D = domain::global&gt;</div>
<div class="foldopen" id="foldopen02487" data-start="{" data-end="}">
<div class="line"><a id="l02487" name="l02487"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#a0ef24a4252e5cc6267766410a03dcebb"> 2487</a></span><span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code hl_function" href="nvtx3_8hpp.html#a0ef24a4252e5cc6267766410a03dcebb">end_range_in</a>(<a class="code hl_struct" href="structnvtx3_1_1v1_1_1range__handle.html">range_handle</a> r) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l02488" name="l02488"></a><span class="lineno"> 2488</span>{</div>
<div class="line"><a id="l02489" name="l02489"></a><span class="lineno"> 2489</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="line"><a id="l02490" name="l02490"></a><span class="lineno"> 2490</span>  nvtxDomainRangeEnd(domain::get&lt;D&gt;(), r.get_value());</div>
<div class="line"><a id="l02491" name="l02491"></a><span class="lineno"> 2491</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l02492" name="l02492"></a><span class="lineno"> 2492</span>  (void)r;</div>
<div class="line"><a id="l02493" name="l02493"></a><span class="lineno"> 2493</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02494" name="l02494"></a><span class="lineno"> 2494</span>}</div>
</div>
<div class="line"><a id="l02495" name="l02495"></a><span class="lineno"> 2495</span> </div>
<div class="foldopen" id="foldopen02509" data-start="{" data-end="}">
<div class="line"><a id="l02509" name="l02509"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#aec1adbeb9e44752027d2ede89f1f0dba"> 2509</a></span><span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code hl_function" href="nvtx3_8hpp.html#aec1adbeb9e44752027d2ede89f1f0dba">end_range</a>(<a class="code hl_struct" href="structnvtx3_1_1v1_1_1range__handle.html">range_handle</a> r) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l02510" name="l02510"></a><span class="lineno"> 2510</span>{</div>
<div class="line"><a id="l02511" name="l02511"></a><span class="lineno"> 2511</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="line"><a id="l02512" name="l02512"></a><span class="lineno"> 2512</span>  end_range_in&lt;domain::global&gt;(r);</div>
<div class="line"><a id="l02513" name="l02513"></a><span class="lineno"> 2513</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l02514" name="l02514"></a><span class="lineno"> 2514</span>  (void)r;</div>
<div class="line"><a id="l02515" name="l02515"></a><span class="lineno"> 2515</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02516" name="l02516"></a><span class="lineno"> 2516</span>}</div>
</div>
<div class="line"><a id="l02517" name="l02517"></a><span class="lineno"> 2517</span> </div>
<div class="line"><a id="l02539" name="l02539"></a><span class="lineno"> 2539</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> D = domain::global&gt;</div>
<div class="foldopen" id="foldopen02540" data-start="{" data-end="};">
<div class="line"><a id="l02540" name="l02540"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1unique__range__in.html"> 2540</a></span><span class="keyword">class </span>NVTX3_MAYBE_UNUSED <a class="code hl_class" href="classnvtx3_1_1v1_1_1unique__range__in.html">unique_range_in</a> {</div>
<div class="line"><a id="l02541" name="l02541"></a><span class="lineno"> 2541</span> <span class="keyword">public</span>:</div>
<div class="foldopen" id="foldopen02555" data-start="{" data-end="}">
<div class="line"><a id="l02555" name="l02555"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1unique__range__in.html#adcf350963f4c071aed55c6c7315847d1"> 2555</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1unique__range__in.html#adcf350963f4c071aed55c6c7315847d1">unique_range_in</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a> <span class="keyword">const</span>&amp; attr) noexcept</div>
<div class="line"><a id="l02556" name="l02556"></a><span class="lineno"> 2556</span>    : handle_{start_range_in&lt;D&gt;(attr)}</div>
<div class="line"><a id="l02557" name="l02557"></a><span class="lineno"> 2557</span>  {</div>
<div class="line"><a id="l02558" name="l02558"></a><span class="lineno"> 2558</span>  }</div>
</div>
<div class="line"><a id="l02559" name="l02559"></a><span class="lineno"> 2559</span> </div>
<div class="line"><a id="l02579" name="l02579"></a><span class="lineno"> 2579</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span>... Args&gt;</div>
<div class="foldopen" id="foldopen02580" data-start="{" data-end="}">
<div class="line"><a id="l02580" name="l02580"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1unique__range__in.html#aaf57515e4b226d0b114ab5fc54f51ee3"> 2580</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1unique__range__in.html#aaf57515e4b226d0b114ab5fc54f51ee3">unique_range_in</a>(Args <span class="keyword">const</span>&amp;... args) noexcept</div>
<div class="line"><a id="l02581" name="l02581"></a><span class="lineno"> 2581</span>    : <a class="code hl_class" href="classnvtx3_1_1v1_1_1unique__range__in.html">unique_range_in</a>{<a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a>{args...}}</div>
<div class="line"><a id="l02582" name="l02582"></a><span class="lineno"> 2582</span>  {</div>
<div class="line"><a id="l02583" name="l02583"></a><span class="lineno"> 2583</span>  }</div>
</div>
<div class="line"><a id="l02584" name="l02584"></a><span class="lineno"> 2584</span> </div>
<div class="line"><a id="l02590" name="l02590"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1unique__range__in.html#a252eabd84e3eaf7ac788446048652c93"> 2590</a></span>  <span class="keyword">constexpr</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1unique__range__in.html#a252eabd84e3eaf7ac788446048652c93">unique_range_in</a>() noexcept : <a class="code hl_class" href="classnvtx3_1_1v1_1_1unique__range__in.html">unique_range_in</a>{<a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a>{}} {}</div>
<div class="line"><a id="l02591" name="l02591"></a><span class="lineno"> 2591</span> </div>
<div class="line"><a id="l02596" name="l02596"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1unique__range__in.html#a931bde31ac0aeb60e8f3050a29c60f83"> 2596</a></span>  <a class="code hl_function" href="classnvtx3_1_1v1_1_1unique__range__in.html#a931bde31ac0aeb60e8f3050a29c60f83">~unique_range_in</a>() noexcept = default;</div>
<div class="line"><a id="l02597" name="l02597"></a><span class="lineno"> 2597</span> </div>
<div class="line"><a id="l02604" name="l02604"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1unique__range__in.html#a0c58843cc9a553f0837fe0e46799006b"> 2604</a></span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1unique__range__in.html">unique_range_in</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1unique__range__in.html">unique_range_in</a>&amp;&amp; other) noexcept = default;</div>
<div class="line"><a id="l02605" name="l02605"></a><span class="lineno"> 2605</span> </div>
<div class="line"><a id="l02612" name="l02612"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1unique__range__in.html#ac898edbc15c5426c6095c6a53f27951f"> 2612</a></span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1unique__range__in.html">unique_range_in</a>&amp; operator=(<a class="code hl_class" href="classnvtx3_1_1v1_1_1unique__range__in.html">unique_range_in</a>&amp;&amp; other) noexcept = default;</div>
<div class="line"><a id="l02613" name="l02613"></a><span class="lineno"> 2613</span> </div>
<div class="line"><a id="l02616" name="l02616"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1unique__range__in.html#a6fffabbfcb1e245bf74e025628b6e67e"> 2616</a></span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1unique__range__in.html">unique_range_in</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1unique__range__in.html">unique_range_in</a> const&amp;) = delete;</div>
<div class="line"><a id="l02617" name="l02617"></a><span class="lineno"> 2617</span> </div>
<div class="line"><a id="l02620" name="l02620"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1unique__range__in.html#a22402183d4e9db06a6b6a00e9218fcab"> 2620</a></span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1unique__range__in.html">unique_range_in</a>&amp; operator=(<a class="code hl_class" href="classnvtx3_1_1v1_1_1unique__range__in.html">unique_range_in</a> const&amp;) = delete;</div>
<div class="line"><a id="l02621" name="l02621"></a><span class="lineno"> 2621</span> </div>
<div class="line"><a id="l02622" name="l02622"></a><span class="lineno"> 2622</span> private:</div>
<div class="line"><a id="l02623" name="l02623"></a><span class="lineno"> 2623</span> </div>
<div class="line"><a id="l02624" name="l02624"></a><span class="lineno"> 2624</span>  struct end_range_handle {</div>
<div class="line"><a id="l02625" name="l02625"></a><span class="lineno"> 2625</span>    <span class="keyword">using </span>pointer = <a class="code hl_struct" href="structnvtx3_1_1v1_1_1range__handle.html">range_handle</a>;  </div>
<div class="line"><a id="l02626" name="l02626"></a><span class="lineno"> 2626</span>    <span class="keywordtype">void</span> operator()(<a class="code hl_struct" href="structnvtx3_1_1v1_1_1range__handle.html">range_handle</a> h) <span class="keyword">const</span> <span class="keyword">noexcept</span> { end_range_in&lt;D&gt;(h); }</div>
<div class="line"><a id="l02627" name="l02627"></a><span class="lineno"> 2627</span>  };</div>
<div class="line"><a id="l02628" name="l02628"></a><span class="lineno"> 2628</span> </div>
<div class="line"><a id="l02630" name="l02630"></a><span class="lineno"> 2630</span>  std::unique_ptr&lt;range_handle, end_range_handle&gt; handle_;</div>
<div class="line"><a id="l02631" name="l02631"></a><span class="lineno"> 2631</span>};</div>
</div>
<div class="line"><a id="l02632" name="l02632"></a><span class="lineno"> 2632</span> </div>
<div class="line"><a id="l02637" name="l02637"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#a14d623348b01d05981c7ea644fd7976c"> 2637</a></span><span class="keyword">using </span><a class="code hl_class" href="classnvtx3_1_1v1_1_1unique__range__in.html">unique_range</a> = <a class="code hl_class" href="classnvtx3_1_1v1_1_1unique__range__in.html">unique_range_in&lt;domain::global&gt;</a>;</div>
<div class="line"><a id="l02638" name="l02638"></a><span class="lineno"> 2638</span> </div>
<div class="line"><a id="l02662" name="l02662"></a><span class="lineno"> 2662</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> D = domain::global&gt;</div>
<div class="foldopen" id="foldopen02663" data-start="{" data-end="}">
<div class="line"><a id="l02663" name="l02663"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#a19ff87d74e1ba3b674b6e0a542d7a228"> 2663</a></span><span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code hl_function" href="nvtx3_8hpp.html#a19ff87d74e1ba3b674b6e0a542d7a228">mark_in</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a> <span class="keyword">const</span>&amp; attr) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l02664" name="l02664"></a><span class="lineno"> 2664</span>{</div>
<div class="line"><a id="l02665" name="l02665"></a><span class="lineno"> 2665</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="line"><a id="l02666" name="l02666"></a><span class="lineno"> 2666</span>  nvtxDomainMarkEx(domain::get&lt;D&gt;(), attr.get());</div>
<div class="line"><a id="l02667" name="l02667"></a><span class="lineno"> 2667</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l02668" name="l02668"></a><span class="lineno"> 2668</span>  (void)(attr);</div>
<div class="line"><a id="l02669" name="l02669"></a><span class="lineno"> 2669</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02670" name="l02670"></a><span class="lineno"> 2670</span>}</div>
</div>
<div class="line"><a id="l02671" name="l02671"></a><span class="lineno"> 2671</span> </div>
<div class="line"><a id="l02699" name="l02699"></a><span class="lineno"> 2699</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> D = domain::global, <span class="keyword">typename</span>... Args&gt;</div>
<div class="foldopen" id="foldopen02700" data-start="{" data-end="}">
<div class="line"><a id="l02700" name="l02700"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#a82d22c4437222a9bf0c5ae0475aaea7a"> 2700</a></span><span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code hl_function" href="nvtx3_8hpp.html#a19ff87d74e1ba3b674b6e0a542d7a228">mark_in</a>(Args <span class="keyword">const</span>&amp;... args) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l02701" name="l02701"></a><span class="lineno"> 2701</span>{</div>
<div class="line"><a id="l02702" name="l02702"></a><span class="lineno"> 2702</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="line"><a id="l02703" name="l02703"></a><span class="lineno"> 2703</span>  mark_in&lt;D&gt;(<a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a>{args...});</div>
<div class="line"><a id="l02704" name="l02704"></a><span class="lineno"> 2704</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l02705" name="l02705"></a><span class="lineno"> 2705</span>  detail::silence_unused(args...);</div>
<div class="line"><a id="l02706" name="l02706"></a><span class="lineno"> 2706</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02707" name="l02707"></a><span class="lineno"> 2707</span>}</div>
</div>
<div class="line"><a id="l02708" name="l02708"></a><span class="lineno"> 2708</span> </div>
<div class="foldopen" id="foldopen02729" data-start="{" data-end="}">
<div class="line"><a id="l02729" name="l02729"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#aa9b21b20125928a45a37c12bf1992651"> 2729</a></span><span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code hl_function" href="nvtx3_8hpp.html#aa9b21b20125928a45a37c12bf1992651">mark</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a> <span class="keyword">const</span>&amp; attr) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l02730" name="l02730"></a><span class="lineno"> 2730</span>{</div>
<div class="line"><a id="l02731" name="l02731"></a><span class="lineno"> 2731</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="line"><a id="l02732" name="l02732"></a><span class="lineno"> 2732</span>  mark_in&lt;domain::global&gt;(attr);</div>
<div class="line"><a id="l02733" name="l02733"></a><span class="lineno"> 2733</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l02734" name="l02734"></a><span class="lineno"> 2734</span>  (void)attr;</div>
<div class="line"><a id="l02735" name="l02735"></a><span class="lineno"> 2735</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02736" name="l02736"></a><span class="lineno"> 2736</span>}</div>
</div>
<div class="line"><a id="l02737" name="l02737"></a><span class="lineno"> 2737</span> </div>
<div class="line"><a id="l02762" name="l02762"></a><span class="lineno"> 2762</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span>... Args&gt;</div>
<div class="foldopen" id="foldopen02763" data-start="{" data-end="}">
<div class="line"><a id="l02763" name="l02763"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#ab3d9b055ef46f4b1b29680e01f91ddaa"> 2763</a></span><span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code hl_function" href="nvtx3_8hpp.html#aa9b21b20125928a45a37c12bf1992651">mark</a>(Args <span class="keyword">const</span>&amp;... args) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l02764" name="l02764"></a><span class="lineno"> 2764</span>{</div>
<div class="line"><a id="l02765" name="l02765"></a><span class="lineno"> 2765</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="line"><a id="l02766" name="l02766"></a><span class="lineno"> 2766</span>  mark_in&lt;domain::global&gt;(args...);</div>
<div class="line"><a id="l02767" name="l02767"></a><span class="lineno"> 2767</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l02768" name="l02768"></a><span class="lineno"> 2768</span>  detail::silence_unused(args...);</div>
<div class="line"><a id="l02769" name="l02769"></a><span class="lineno"> 2769</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02770" name="l02770"></a><span class="lineno"> 2770</span>}</div>
</div>
<div class="line"><a id="l02771" name="l02771"></a><span class="lineno"> 2771</span> </div>
<div class="line"><a id="l02772" name="l02772"></a><span class="lineno"> 2772</span>}  <span class="comment">// namespace NVTX3_VERSION_NAMESPACE</span></div>
<div class="line"><a id="l02773" name="l02773"></a><span class="lineno"> 2773</span> </div>
<div class="line"><a id="l02774" name="l02774"></a><span class="lineno"> 2774</span>}  <span class="comment">// namespace nvtx3</span></div>
<div class="line"><a id="l02775" name="l02775"></a><span class="lineno"> 2775</span> </div>
<div class="line"><a id="l02776" name="l02776"></a><span class="lineno"> 2776</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="foldopen" id="foldopen02805" data-start="" data-end="">
<div class="line"><a id="l02805" name="l02805"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#a58b4c0fa6be7f4754f8e73bcbf6fd1af"> 2805</a></span><span class="preprocessor">#define NVTX3_V1_FUNC_RANGE_IN(D)                                                  \</span></div>
<div class="line"><a id="l02806" name="l02806"></a><span class="lineno"> 2806</span><span class="preprocessor">  static ::nvtx3::v1::registered_string_in&lt;D&gt; const nvtx3_func_name__{__func__};   \</span></div>
<div class="line"><a id="l02807" name="l02807"></a><span class="lineno"> 2807</span><span class="preprocessor">  static ::nvtx3::v1::event_attributes const nvtx3_func_attr__{nvtx3_func_name__}; \</span></div>
<div class="line"><a id="l02808" name="l02808"></a><span class="lineno"> 2808</span><span class="preprocessor">  ::nvtx3::v1::scoped_range_in&lt;D&gt; const nvtx3_range__{nvtx3_func_attr__}</span></div>
</div>
<div class="line"><a id="l02809" name="l02809"></a><span class="lineno"> 2809</span> </div>
<div class="foldopen" id="foldopen02826" data-start="" data-end="">
<div class="line"><a id="l02826" name="l02826"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#af6fecf49b25b2364e548f9786136fb95"> 2826</a></span><span class="preprocessor">#define NVTX3_V1_FUNC_RANGE_IF_IN(D, C) \</span></div>
<div class="line"><a id="l02827" name="l02827"></a><span class="lineno"> 2827</span><span class="preprocessor">  ::nvtx3::v1::detail::optional_scoped_range_in&lt;D&gt; optional_nvtx3_range__;           \</span></div>
<div class="line"><a id="l02828" name="l02828"></a><span class="lineno"> 2828</span><span class="preprocessor">  if (C) {                                                                           \</span></div>
<div class="line"><a id="l02829" name="l02829"></a><span class="lineno"> 2829</span><span class="preprocessor">    static ::nvtx3::v1::registered_string_in&lt;D&gt; const nvtx3_func_name__{__func__};   \</span></div>
<div class="line"><a id="l02830" name="l02830"></a><span class="lineno"> 2830</span><span class="preprocessor">    static ::nvtx3::v1::event_attributes const nvtx3_func_attr__{nvtx3_func_name__}; \</span></div>
<div class="line"><a id="l02831" name="l02831"></a><span class="lineno"> 2831</span><span class="preprocessor">    optional_nvtx3_range__.begin(nvtx3_func_attr__);                                 \</span></div>
<div class="line"><a id="l02832" name="l02832"></a><span class="lineno"> 2832</span><span class="preprocessor">  } (void)0</span></div>
</div>
<div class="line"><a id="l02833" name="l02833"></a><span class="lineno"> 2833</span><span class="preprocessor">#else </span><span class="comment">/* NVTX_DISABLE */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l02834" name="l02834"></a><span class="lineno"> 2834</span><span class="preprocessor">#define NVTX3_V1_FUNC_RANGE_IN(D) (void)0</span></div>
<div class="line"><a id="l02835" name="l02835"></a><span class="lineno"> 2835</span><span class="preprocessor">#define NVTX3_V1_FUNC_RANGE_IF_IN(D, C) (void)(C)</span></div>
<div class="line"><a id="l02836" name="l02836"></a><span class="lineno"> 2836</span><span class="preprocessor">#endif </span><span class="comment">/* NVTX_DISABLE */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l02837" name="l02837"></a><span class="lineno"> 2837</span> </div>
<div class="line"><a id="l02860" name="l02860"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#a9f0dbc21588c8d0f6ee728fdf5289490"> 2860</a></span><span class="preprocessor">#define NVTX3_V1_FUNC_RANGE() NVTX3_V1_FUNC_RANGE_IN(::nvtx3::v1::domain::global)</span></div>
<div class="line"><a id="l02861" name="l02861"></a><span class="lineno"> 2861</span> </div>
<div class="line"><a id="l02873" name="l02873"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#a7f4e78b0ede77382c2c09fa007c5963e"> 2873</a></span><span class="preprocessor">#define NVTX3_V1_FUNC_RANGE_IF(C) NVTX3_V1_FUNC_RANGE_IF_IN(::nvtx3::v1::domain::global, C)</span></div>
<div class="line"><a id="l02874" name="l02874"></a><span class="lineno"> 2874</span> </div>
<div class="line"><a id="l02875" name="l02875"></a><span class="lineno"> 2875</span><span class="comment">/* When inlining this version, versioned macros must have unversioned aliases.</span></div>
<div class="line"><a id="l02876" name="l02876"></a><span class="lineno"> 2876</span><span class="comment"> * For each NVTX3_Vx_ #define, make an NVTX3_ alias of it here.*/</span></div>
<div class="line"><a id="l02877" name="l02877"></a><span class="lineno"> 2877</span><span class="preprocessor">#if defined(NVTX3_INLINE_THIS_VERSION)</span></div>
<div class="line"><a id="l02878" name="l02878"></a><span class="lineno"> 2878</span><span class="comment">/* clang format off */</span></div>
<div class="line"><a id="l02879" name="l02879"></a><span class="lineno"> 2879</span><span class="preprocessor">#define NVTX3_FUNC_RANGE       NVTX3_V1_FUNC_RANGE</span></div>
<div class="line"><a id="l02880" name="l02880"></a><span class="lineno"> 2880</span><span class="preprocessor">#define NVTX3_FUNC_RANGE_IF    NVTX3_V1_FUNC_RANGE_IF</span></div>
<div class="line"><a id="l02881" name="l02881"></a><span class="lineno"> 2881</span><span class="preprocessor">#define NVTX3_FUNC_RANGE_IN    NVTX3_V1_FUNC_RANGE_IN</span></div>
<div class="line"><a id="l02882" name="l02882"></a><span class="lineno"> 2882</span><span class="preprocessor">#define NVTX3_FUNC_RANGE_IF_IN NVTX3_V1_FUNC_RANGE_IF_IN</span></div>
<div class="line"><a id="l02883" name="l02883"></a><span class="lineno"> 2883</span><span class="comment">/* clang format on */</span></div>
<div class="line"><a id="l02884" name="l02884"></a><span class="lineno"> 2884</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02885" name="l02885"></a><span class="lineno"> 2885</span> </div>
<div class="line"><a id="l02886" name="l02886"></a><span class="lineno"> 2886</span><span class="preprocessor">#endif  </span><span class="comment">// NVTX3_CPP_DEFINITIONS_V1_0</span></div>
<div class="line"><a id="l02887" name="l02887"></a><span class="lineno"> 2887</span> </div>
<div class="line"><a id="l02888" name="l02888"></a><span class="lineno"> 2888</span><span class="comment">/* Add functionality for new minor versions here, by copying the above section enclosed</span></div>
<div class="line"><a id="l02889" name="l02889"></a><span class="lineno"> 2889</span><span class="comment"> * in #ifndef NVTX3_CPP_DEFINITIONS_Vx_y, and incrementing the minor version.  This code</span></div>
<div class="line"><a id="l02890" name="l02890"></a><span class="lineno"> 2890</span><span class="comment"> * is an example of how additions for version 1.2 would look, indented for clarity.  Note</span></div>
<div class="line"><a id="l02891" name="l02891"></a><span class="lineno"> 2891</span><span class="comment"> * that the versioned symbols and macros are always provided, and the unversioned symbols</span></div>
<div class="line"><a id="l02892" name="l02892"></a><span class="lineno"> 2892</span><span class="comment"> * are only provided if NVTX3_INLINE_THIS_VERSION was defined at the top of this header.</span></div>
<div class="line"><a id="l02893" name="l02893"></a><span class="lineno"> 2893</span><span class="comment"> *</span></div>
<div class="line"><a id="l02894" name="l02894"></a><span class="lineno"> 2894</span><span class="comment"> * \code{.cpp}</span></div>
<div class="line"><a id="l02895" name="l02895"></a><span class="lineno"> 2895</span><span class="comment"> * #ifndef NVTX3_CPP_DEFINITIONS_V1_2</span></div>
<div class="line"><a id="l02896" name="l02896"></a><span class="lineno"> 2896</span><span class="comment"> * #define NVTX3_CPP_DEFINITIONS_V1_2</span></div>
<div class="line"><a id="l02897" name="l02897"></a><span class="lineno"> 2897</span><span class="comment"> *     namespace nvtx3 {</span></div>
<div class="line"><a id="l02898" name="l02898"></a><span class="lineno"> 2898</span><span class="comment"> *         NVTX3_INLINE_IF_REQUESTED namespace NVTX3_VERSION_NAMESPACE {</span></div>
<div class="line"><a id="l02899" name="l02899"></a><span class="lineno"> 2899</span><span class="comment"> *             class new_class {};</span></div>
<div class="line"><a id="l02900" name="l02900"></a><span class="lineno"> 2900</span><span class="comment"> *             inline void new_function() {}</span></div>
<div class="line"><a id="l02901" name="l02901"></a><span class="lineno"> 2901</span><span class="comment"> *         }</span></div>
<div class="line"><a id="l02902" name="l02902"></a><span class="lineno"> 2902</span><span class="comment"> *     }</span></div>
<div class="line"><a id="l02903" name="l02903"></a><span class="lineno"> 2903</span><span class="comment"> *</span></div>
<div class="line"><a id="l02904" name="l02904"></a><span class="lineno"> 2904</span><span class="comment"> *     // Macros must have the major version in their names:</span></div>
<div class="line"><a id="l02905" name="l02905"></a><span class="lineno"> 2905</span><span class="comment"> *     #define NVTX3_V1_NEW_MACRO_A() ...</span></div>
<div class="line"><a id="l02906" name="l02906"></a><span class="lineno"> 2906</span><span class="comment"> *     #define NVTX3_V1_NEW_MACRO_B() ...</span></div>
<div class="line"><a id="l02907" name="l02907"></a><span class="lineno"> 2907</span><span class="comment"> *</span></div>
<div class="line"><a id="l02908" name="l02908"></a><span class="lineno"> 2908</span><span class="comment"> *     // If inlining, make aliases for the macros with the version number omitted</span></div>
<div class="line"><a id="l02909" name="l02909"></a><span class="lineno"> 2909</span><span class="comment"> *     #if defined(NVTX3_INLINE_THIS_VERSION)</span></div>
<div class="line"><a id="l02910" name="l02910"></a><span class="lineno"> 2910</span><span class="comment"> *         #define NVTX3_NEW_MACRO_A NVTX3_V1_NEW_MACRO_A</span></div>
<div class="line"><a id="l02911" name="l02911"></a><span class="lineno"> 2911</span><span class="comment"> *         #define NVTX3_NEW_MACRO_B NVTX3_V1_NEW_MACRO_B</span></div>
<div class="line"><a id="l02912" name="l02912"></a><span class="lineno"> 2912</span><span class="comment"> *     #endif</span></div>
<div class="line"><a id="l02913" name="l02913"></a><span class="lineno"> 2913</span><span class="comment"> * #endif // NVTX3_CPP_DEFINITIONS_V1_2</span></div>
<div class="line"><a id="l02914" name="l02914"></a><span class="lineno"> 2914</span><span class="comment"> * \endcode</span></div>
<div class="line"><a id="l02915" name="l02915"></a><span class="lineno"> 2915</span><span class="comment"> */</span></div>
<div class="line"><a id="l02916" name="l02916"></a><span class="lineno"> 2916</span> </div>
<div class="line"><a id="l02917" name="l02917"></a><span class="lineno"> 2917</span><span class="comment">/* Undefine all temporarily-defined unversioned macros, which would conflict with</span></div>
<div class="line"><a id="l02918" name="l02918"></a><span class="lineno"> 2918</span><span class="comment"> * subsequent includes of different versions of this header. */</span></div>
<div class="line"><a id="l02919" name="l02919"></a><span class="lineno"> 2919</span><span class="preprocessor">#undef NVTX3_CPP_VERSION_MAJOR</span></div>
<div class="line"><a id="l02920" name="l02920"></a><span class="lineno"> 2920</span><span class="preprocessor">#undef NVTX3_CPP_VERSION_MINOR</span></div>
<div class="line"><a id="l02921" name="l02921"></a><span class="lineno"> 2921</span><span class="preprocessor">#undef NVTX3_CONCAT</span></div>
<div class="line"><a id="l02922" name="l02922"></a><span class="lineno"> 2922</span><span class="preprocessor">#undef NVTX3_NAMESPACE_FOR</span></div>
<div class="line"><a id="l02923" name="l02923"></a><span class="lineno"> 2923</span><span class="preprocessor">#undef NVTX3_VERSION_NAMESPACE</span></div>
<div class="line"><a id="l02924" name="l02924"></a><span class="lineno"> 2924</span><span class="preprocessor">#undef NVTX3_INLINE_IF_REQUESTED</span></div>
<div class="line"><a id="l02925" name="l02925"></a><span class="lineno"> 2925</span><span class="preprocessor">#undef NVTX3_CONSTEXPR_IF_CPP14</span></div>
<div class="line"><a id="l02926" name="l02926"></a><span class="lineno"> 2926</span><span class="preprocessor">#undef NVTX3_MAYBE_UNUSED</span></div>
<div class="line"><a id="l02927" name="l02927"></a><span class="lineno"> 2927</span><span class="preprocessor">#undef NVTX3_NO_DISCARD</span></div>
<div class="line"><a id="l02928" name="l02928"></a><span class="lineno"> 2928</span> </div>
<div class="line"><a id="l02929" name="l02929"></a><span class="lineno"> 2929</span><span class="preprocessor">#if defined(NVTX3_INLINE_THIS_VERSION)</span></div>
<div class="line"><a id="l02930" name="l02930"></a><span class="lineno"> 2930</span><span class="preprocessor">#undef NVTX3_INLINE_THIS_VERSION</span></div>
<div class="line"><a id="l02931" name="l02931"></a><span class="lineno"> 2931</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02932" name="l02932"></a><span class="lineno"> 2932</span> </div>
<div class="line"><a id="l02933" name="l02933"></a><span class="lineno"> 2933</span><span class="preprocessor">#if defined(NVTX3_USE_CHECKED_OVERLOADS_FOR_GET_DEFINED_HERE)</span></div>
<div class="line"><a id="l02934" name="l02934"></a><span class="lineno"> 2934</span><span class="preprocessor">#undef NVTX3_USE_CHECKED_OVERLOADS_FOR_GET_DEFINED_HERE</span></div>
<div class="line"><a id="l02935" name="l02935"></a><span class="lineno"> 2935</span><span class="preprocessor">#undef NVTX3_USE_CHECKED_OVERLOADS_FOR_GET</span></div>
<div class="line"><a id="l02936" name="l02936"></a><span class="lineno"> 2936</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02937" name="l02937"></a><span class="lineno"> 2937</span> </div>
<div class="line"><a id="l02938" name="l02938"></a><span class="lineno"> 2938</span><span class="preprocessor">#if defined(NVTX3_STATIC_ASSERT_DEFINED_HERE)</span></div>
<div class="line"><a id="l02939" name="l02939"></a><span class="lineno"> 2939</span><span class="preprocessor">#undef NVTX3_STATIC_ASSERT_DEFINED_HERE</span></div>
<div class="line"><a id="l02940" name="l02940"></a><span class="lineno"> 2940</span><span class="preprocessor">#undef NVTX3_STATIC_ASSERT</span></div>
<div class="line"><a id="l02941" name="l02941"></a><span class="lineno"> 2941</span><span class="preprocessor">#endif</span></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1category_html"><div class="ttname"><a href="classnvtx3_1_1v1_1_1category.html">nvtx3::category</a></div><div class="ttdoc">Object for intra-domain grouping of NVTX events.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01166">nvtx3.hpp:1166</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1category_html_a16b26c66ef40850b7bf79fb8e8b9ccec"><div class="ttname"><a href="classnvtx3_1_1v1_1_1category.html#a16b26c66ef40850b7bf79fb8e8b9ccec">nvtx3::v1::category::category</a></div><div class="ttdeci">constexpr category(id_type id) noexcept</div><div class="ttdoc">Construct a category with the specified id.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01180">nvtx3.hpp:1180</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1category_html_a5d59d395dff9e74ec8bd6154581fc345"><div class="ttname"><a href="classnvtx3_1_1v1_1_1category.html#a5d59d395dff9e74ec8bd6154581fc345">nvtx3::v1::category::get_id</a></div><div class="ttdeci">constexpr id_type get_id() const noexcept</div><div class="ttdoc">Returns the id of the category.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01186">nvtx3.hpp:1186</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1category_html_a93b9c6f1e074a03ee50287c9c6414bc0"><div class="ttname"><a href="classnvtx3_1_1v1_1_1category.html#a93b9c6f1e074a03ee50287c9c6414bc0">nvtx3::v1::category::id_type</a></div><div class="ttdeci">uint32_t id_type</div><div class="ttdoc">Type used for categorys integer id.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01169">nvtx3.hpp:1169</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1color_html"><div class="ttname"><a href="classnvtx3_1_1v1_1_1color.html">nvtx3::color</a></div><div class="ttdoc">Represents a custom color that can be associated with an NVTX event via its event_attributes.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01059">nvtx3.hpp:1059</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1color_html_a44f694cefa3afee1d9dfbf2fde3a06f4"><div class="ttname"><a href="classnvtx3_1_1v1_1_1color.html#a44f694cefa3afee1d9dfbf2fde3a06f4">nvtx3::v1::color::get_value</a></div><div class="ttdeci">constexpr value_type get_value() const noexcept</div><div class="ttdoc">Returns the colors argb hex code.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01111">nvtx3.hpp:1111</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1color_html_a47084ed086b5071cd7b070b0a4611e24"><div class="ttname"><a href="classnvtx3_1_1v1_1_1color.html#a47084ed086b5071cd7b070b0a4611e24">nvtx3::v1::color::color</a></div><div class="ttdeci">constexpr color(rgb rgb_) noexcept</div><div class="ttdoc">Construct a color using the red, green, blue components in rgb.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01102">nvtx3.hpp:1102</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1color_html_a6327e421cdd233398693a2804aea942f"><div class="ttname"><a href="classnvtx3_1_1v1_1_1color.html#a6327e421cdd233398693a2804aea942f">nvtx3::v1::color::value_type</a></div><div class="ttdeci">uint32_t value_type</div><div class="ttdoc">Type used for the color's value.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01062">nvtx3.hpp:1062</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1color_html_a671a9e63379a2896f5c689fb0a37f0a9"><div class="ttname"><a href="classnvtx3_1_1v1_1_1color.html#a671a9e63379a2896f5c689fb0a37f0a9">nvtx3::v1::color::color</a></div><div class="ttdeci">constexpr color(value_type hex_code) noexcept</div><div class="ttdoc">Constructs a color using the value provided by hex_code.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01081">nvtx3.hpp:1081</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1color_html_abd11ca09f1b3a66041cea45d4141dc37"><div class="ttname"><a href="classnvtx3_1_1v1_1_1color.html#abd11ca09f1b3a66041cea45d4141dc37">nvtx3::v1::color::color</a></div><div class="ttdeci">constexpr color(argb argb_) noexcept</div><div class="ttdoc">Construct a color using the alpha, red, green, blue components in argb.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01089">nvtx3.hpp:1089</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1color_html_af550398d7d76d9452576860a4363d75c"><div class="ttname"><a href="classnvtx3_1_1v1_1_1color.html#af550398d7d76d9452576860a4363d75c">nvtx3::v1::color::get_type</a></div><div class="ttdeci">constexpr nvtxColorType_t get_type() const noexcept</div><div class="ttdoc">Return the NVTX color type of the color.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01117">nvtx3.hpp:1117</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1domain_html"><div class="ttname"><a href="classnvtx3_1_1v1_1_1domain.html">nvtx3::domain</a></div><div class="ttdoc">domains allow for grouping NVTX events into a single scope to differentiate them from events in other...</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l00769">nvtx3.hpp:769</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1domain_html_a0d83a594238449a3da85e337409fc3db"><div class="ttname"><a href="classnvtx3_1_1v1_1_1domain.html#a0d83a594238449a3da85e337409fc3db">nvtx3::v1::domain::get</a></div><div class="ttdeci">static domain const &amp; get() noexcept</div><div class="ttdoc">Returns reference to an instance of a function local static domain object.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l00839">nvtx3.hpp:839</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1event__attributes_html"><div class="ttname"><a href="classnvtx3_1_1v1_1_1event__attributes.html">nvtx3::event_attributes</a></div><div class="ttdoc">Describes the attributes of a NVTX event.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01954">nvtx3.hpp:1954</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1event__attributes_html_a14e581407cea05235f0f814f4043c656"><div class="ttname"><a href="classnvtx3_1_1v1_1_1event__attributes.html#a14e581407cea05235f0f814f4043c656">nvtx3::v1::event_attributes::event_attributes</a></div><div class="ttdeci">event_attributes(color const &amp;c, Args const &amp;... args) noexcept</div><div class="ttdoc">Variadic constructor where the first argument is a color.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l02000">nvtx3.hpp:2000</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1event__attributes_html_a27ef8784b11bb620cd597ea55a781e02"><div class="ttname"><a href="classnvtx3_1_1v1_1_1event__attributes.html#a27ef8784b11bb620cd597ea55a781e02">nvtx3::v1::event_attributes::event_attributes</a></div><div class="ttdeci">event_attributes(category const &amp;c, Args const &amp;... args) noexcept</div><div class="ttdoc">Variadic constructor where the first argument is a category.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01986">nvtx3.hpp:1986</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1event__attributes_html_aa060dd3c07034ccef18c2b48ec99f90c"><div class="ttname"><a href="classnvtx3_1_1v1_1_1event__attributes.html#aa060dd3c07034ccef18c2b48ec99f90c">nvtx3::v1::event_attributes::get</a></div><div class="ttdeci">constexpr value_type const * get() const noexcept</div><div class="ttdoc">Get raw pointer to underlying NVTX attributes object.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l02047">nvtx3.hpp:2047</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1event__attributes_html_ac16fc2b8249f503ff89ee14a9fdb63fd"><div class="ttname"><a href="classnvtx3_1_1v1_1_1event__attributes.html#ac16fc2b8249f503ff89ee14a9fdb63fd">nvtx3::v1::event_attributes::event_attributes</a></div><div class="ttdeci">event_attributes(payload const &amp;p, Args const &amp;... args) noexcept</div><div class="ttdoc">Variadic constructor where the first argument is a payload.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l02015">nvtx3.hpp:2015</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1event__attributes_html_acccdd768a4fbe2234d151e8a8443f44f"><div class="ttname"><a href="classnvtx3_1_1v1_1_1event__attributes.html#acccdd768a4fbe2234d151e8a8443f44f">nvtx3::v1::event_attributes::event_attributes</a></div><div class="ttdeci">event_attributes(message const &amp;m, Args const &amp;... args) noexcept</div><div class="ttdoc">Variadic constructor where the first argument is a message.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l02030">nvtx3.hpp:2030</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1event__attributes_html_af9b06fcd1d0bb4b8739009b3b00ef34d"><div class="ttname"><a href="classnvtx3_1_1v1_1_1event__attributes.html#af9b06fcd1d0bb4b8739009b3b00ef34d">nvtx3::v1::event_attributes::event_attributes</a></div><div class="ttdeci">constexpr event_attributes() noexcept</div><div class="ttdoc">Default constructor creates an event_attributes with no category, color, payload, nor message.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01962">nvtx3.hpp:1962</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1message_html"><div class="ttname"><a href="classnvtx3_1_1v1_1_1message.html">nvtx3::message</a></div><div class="ttdoc">Allows associating a message string with an NVTX event via its EventAttributes.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01664">nvtx3.hpp:1664</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1message_html_a0864f7bb6f147a8e45241883fc53d2bf"><div class="ttname"><a href="classnvtx3_1_1v1_1_1message.html#a0864f7bb6f147a8e45241883fc53d2bf">nvtx3::v1::message::message</a></div><div class="ttdeci">message(std::string const &amp;msg) noexcept</div><div class="ttdoc">Construct a message whose contents are specified by msg.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01683">nvtx3.hpp:1683</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1message_html_a15e5e0153c1ccb5db9db7ed35ed61481"><div class="ttname"><a href="classnvtx3_1_1v1_1_1message.html#a15e5e0153c1ccb5db9db7ed35ed61481">nvtx3::v1::message::message</a></div><div class="ttdeci">message(wchar_t const *msg) noexcept</div><div class="ttdoc">Construct a message whose contents are specified by msg.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01700">nvtx3.hpp:1700</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1message_html_a17d2eaf8f1c653ddf6237425833f3cfc"><div class="ttname"><a href="classnvtx3_1_1v1_1_1message.html#a17d2eaf8f1c653ddf6237425833f3cfc">nvtx3::v1::message::get_value</a></div><div class="ttdeci">constexpr value_type get_value() const noexcept</div><div class="ttdoc">Return the union holding the value of the message.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01765">nvtx3.hpp:1765</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1message_html_a2827347a64c6c91518f5191eade74054"><div class="ttname"><a href="classnvtx3_1_1v1_1_1message.html#a2827347a64c6c91518f5191eade74054">nvtx3::v1::message::message</a></div><div class="ttdeci">message(registered_string_in&lt; D &gt; const &amp;msg) noexcept</div><div class="ttdoc">Construct a message from a registered_string_in.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01731">nvtx3.hpp:1731</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1message_html_a3a8b73acb3c9cd2a5d78fe94efb0a9db"><div class="ttname"><a href="classnvtx3_1_1v1_1_1message.html#a3a8b73acb3c9cd2a5d78fe94efb0a9db">nvtx3::v1::message::message</a></div><div class="ttdeci">message(std::wstring &amp;&amp;)=delete</div><div class="ttdoc">Disallow construction for std::wstring r-value.</div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1message_html_a856a7186fd697a92b2a6699a448ffc45"><div class="ttname"><a href="classnvtx3_1_1v1_1_1message.html#a856a7186fd697a92b2a6699a448ffc45">nvtx3::v1::message::get_type</a></div><div class="ttdeci">constexpr nvtxMessageType_t get_type() const noexcept</div><div class="ttdoc">Return the type information about the value the union holds.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01771">nvtx3.hpp:1771</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1message_html_ab0e7eae70ce91c6f8aa9be048fc146bd"><div class="ttname"><a href="classnvtx3_1_1v1_1_1message.html#ab0e7eae70ce91c6f8aa9be048fc146bd">nvtx3::v1::message::message</a></div><div class="ttdeci">message(nvtxStringHandle_t handle) noexcept</div><div class="ttdoc">Construct a message from NVTX C API registered string handle.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01755">nvtx3.hpp:1755</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1message_html_abdbef47b3202d55a8b956da6b1296448"><div class="ttname"><a href="classnvtx3_1_1v1_1_1message.html#abdbef47b3202d55a8b956da6b1296448">nvtx3::v1::message::message</a></div><div class="ttdeci">message(char const *msg) noexcept</div><div class="ttdoc">Construct a message whose contents are specified by msg.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01673">nvtx3.hpp:1673</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1message_html_ad16d6a6518feb8f438faf0dbe052a4ee"><div class="ttname"><a href="classnvtx3_1_1v1_1_1message.html#ad16d6a6518feb8f438faf0dbe052a4ee">nvtx3::v1::message::message</a></div><div class="ttdeci">constexpr message(nvtxMessageType_t const &amp;type, nvtxMessageValue_t const &amp;value) noexcept</div><div class="ttdoc">Construct a message from NVTX C API type and value.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01743">nvtx3.hpp:1743</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1message_html_ad5fcc11a05dfb819fcf3238ae90131a0"><div class="ttname"><a href="classnvtx3_1_1v1_1_1message.html#ad5fcc11a05dfb819fcf3238ae90131a0">nvtx3::v1::message::message</a></div><div class="ttdeci">message(std::string &amp;&amp;)=delete</div><div class="ttdoc">Disallow construction for std::string r-value.</div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1message_html_af152cd392b2bd13dd1fd00fbf2d29c09"><div class="ttname"><a href="classnvtx3_1_1v1_1_1message.html#af152cd392b2bd13dd1fd00fbf2d29c09">nvtx3::v1::message::message</a></div><div class="ttdeci">message(std::wstring const &amp;msg) noexcept</div><div class="ttdoc">Construct a message whose contents are specified by msg.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01710">nvtx3.hpp:1710</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1named__category__in_html"><div class="ttname"><a href="classnvtx3_1_1v1_1_1named__category__in.html">nvtx3::named_category_in</a></div><div class="ttdoc">A category with an associated name string.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01249">nvtx3.hpp:1249</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1named__category__in_html_a0b8ac1f00f1c0686858a20884c8eb19a"><div class="ttname"><a href="classnvtx3_1_1v1_1_1named__category__in.html#a0b8ac1f00f1c0686858a20884c8eb19a">nvtx3::v1::named_category_in::named_category_in</a></div><div class="ttdeci">named_category_in(id_type id, wchar_t const *name) noexcept</div><div class="ttdoc">Construct a named_category_in with the specified id and name.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01385">nvtx3.hpp:1385</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1named__category__in_html_a3bc82f4cd71482347796787bc4436e30"><div class="ttname"><a href="classnvtx3_1_1v1_1_1named__category__in.html#a3bc82f4cd71482347796787bc4436e30">nvtx3::v1::named_category_in::get</a></div><div class="ttdeci">static named_category_in const &amp; get() noexcept</div><div class="ttdoc">Returns a global instance of a named_category_in as a function-local static.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01291">nvtx3.hpp:1291</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1named__category__in_html_a7fe4261f6a0b9d1cfb6e566d8ff2135f"><div class="ttname"><a href="classnvtx3_1_1v1_1_1named__category__in.html#a7fe4261f6a0b9d1cfb6e566d8ff2135f">nvtx3::v1::named_category_in::named_category_in</a></div><div class="ttdeci">named_category_in(id_type id, char const *name) noexcept</div><div class="ttdoc">Construct a named_category_in with the specified id and name.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01365">nvtx3.hpp:1365</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1payload_html"><div class="ttname"><a href="classnvtx3_1_1v1_1_1payload.html">nvtx3::payload</a></div><div class="ttdoc">A numerical value that can be associated with an NVTX event via its event_attributes.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01794">nvtx3.hpp:1794</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1payload_html_a0351f31362bee4c7222bfa830dc46adf"><div class="ttname"><a href="classnvtx3_1_1v1_1_1payload.html#a0351f31362bee4c7222bfa830dc46adf">nvtx3::v1::payload::payload</a></div><div class="ttdeci">payload(int32_t value) noexcept</div><div class="ttdoc">Construct a payload from a signed, 4 byte integer.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01814">nvtx3.hpp:1814</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1payload_html_a2c3609dc8a8e6ce0ddfda5e96113ea53"><div class="ttname"><a href="classnvtx3_1_1v1_1_1payload.html#a2c3609dc8a8e6ce0ddfda5e96113ea53">nvtx3::v1::payload::payload</a></div><div class="ttdeci">constexpr payload(nvtxPayloadType_t const &amp;type, value_type const &amp;value) noexcept</div><div class="ttdoc">Construct a payload from NVTX C API type and value.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01872">nvtx3.hpp:1872</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1payload_html_a3755fd622f2552519d77f83d2f41950d"><div class="ttname"><a href="classnvtx3_1_1v1_1_1payload.html#a3755fd622f2552519d77f83d2f41950d">nvtx3::v1::payload::payload</a></div><div class="ttdeci">payload(uint32_t value) noexcept</div><div class="ttdoc">Construct a payload from an unsigned, 4 byte integer.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01836">nvtx3.hpp:1836</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1payload_html_a4eb0c1e4256db34fa68779a67d26e4ef"><div class="ttname"><a href="classnvtx3_1_1v1_1_1payload.html#a4eb0c1e4256db34fa68779a67d26e4ef">nvtx3::v1::payload::payload</a></div><div class="ttdeci">payload(int64_t value) noexcept</div><div class="ttdoc">Construct a payload from a signed, 8 byte integer.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01803">nvtx3.hpp:1803</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1payload_html_a69cc4703669a5c973fcac94b998b1677"><div class="ttname"><a href="classnvtx3_1_1v1_1_1payload.html#a69cc4703669a5c973fcac94b998b1677">nvtx3::v1::payload::payload</a></div><div class="ttdeci">payload(float value) noexcept</div><div class="ttdoc">Construct a payload from a single-precision floating point value.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01848">nvtx3.hpp:1848</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1payload_html_ab2f4ae9a528d1ba77a99aa6a334123ed"><div class="ttname"><a href="classnvtx3_1_1v1_1_1payload.html#ab2f4ae9a528d1ba77a99aa6a334123ed">nvtx3::v1::payload::payload</a></div><div class="ttdeci">payload(double value) noexcept</div><div class="ttdoc">Construct a payload from a double-precision floating point value.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01860">nvtx3.hpp:1860</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1payload_html_abb1094dc4fa3abc332ed18133fb2164e"><div class="ttname"><a href="classnvtx3_1_1v1_1_1payload.html#abb1094dc4fa3abc332ed18133fb2164e">nvtx3::v1::payload::get_value</a></div><div class="ttdeci">constexpr value_type get_value() const noexcept</div><div class="ttdoc">Return the union holding the value of the payload.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01883">nvtx3.hpp:1883</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1payload_html_aeb3c21614c98acab62d0007175093172"><div class="ttname"><a href="classnvtx3_1_1v1_1_1payload.html#aeb3c21614c98acab62d0007175093172">nvtx3::v1::payload::get_type</a></div><div class="ttdeci">constexpr nvtxPayloadType_t get_type() const noexcept</div><div class="ttdoc">Return the information about the type the union holds.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01889">nvtx3.hpp:1889</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1payload_html_afae6410eb17c40079fec46cfa6472ca8"><div class="ttname"><a href="classnvtx3_1_1v1_1_1payload.html#afae6410eb17c40079fec46cfa6472ca8">nvtx3::v1::payload::payload</a></div><div class="ttdeci">payload(uint64_t value) noexcept</div><div class="ttdoc">Construct a payload from an unsigned, 8 byte integer.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01825">nvtx3.hpp:1825</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1registered__string__in_html"><div class="ttname"><a href="classnvtx3_1_1v1_1_1registered__string__in.html">nvtx3::registered_string_in</a></div><div class="ttdoc">A message registered with NVTX.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01449">nvtx3.hpp:1449</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1registered__string__in_html_a059adcf011e73293c1d76a512d316524"><div class="ttname"><a href="classnvtx3_1_1v1_1_1registered__string__in.html#a059adcf011e73293c1d76a512d316524">nvtx3::v1::registered_string_in::registered_string_in</a></div><div class="ttdeci">registered_string_in(char const *msg) noexcept</div><div class="ttdoc">Constructs a registered_string_in from the specified msg string.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01551">nvtx3.hpp:1551</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1registered__string__in_html_a13d5f54f46e91073677fcfbe094dd261"><div class="ttname"><a href="classnvtx3_1_1v1_1_1registered__string__in.html#a13d5f54f46e91073677fcfbe094dd261">nvtx3::v1::registered_string_in::get_handle</a></div><div class="ttdeci">nvtxStringHandle_t get_handle() const noexcept</div><div class="ttdoc">Returns the registered string's handle.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01604">nvtx3.hpp:1604</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1registered__string__in_html_a7e8f0b775f6363e2187f50648c5a44f5"><div class="ttname"><a href="classnvtx3_1_1v1_1_1registered__string__in.html#a7e8f0b775f6363e2187f50648c5a44f5">nvtx3::v1::registered_string_in::registered_string_in</a></div><div class="ttdeci">registered_string_in(std::string const &amp;msg) noexcept</div><div class="ttdoc">Constructs a registered_string_in from the specified msg string.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01567">nvtx3.hpp:1567</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1registered__string__in_html_a90f6112510f0745a373a7fdb162b85de"><div class="ttname"><a href="classnvtx3_1_1v1_1_1registered__string__in.html#a90f6112510f0745a373a7fdb162b85de">nvtx3::v1::registered_string_in::registered_string_in</a></div><div class="ttdeci">registered_string_in(std::wstring const &amp;msg) noexcept</div><div class="ttdoc">Constructs a registered_string_in from the specified msg string.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01597">nvtx3.hpp:1597</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1registered__string__in_html_ab9d2c81308244bec4198167e2c8d3d4c"><div class="ttname"><a href="classnvtx3_1_1v1_1_1registered__string__in.html#ab9d2c81308244bec4198167e2c8d3d4c">nvtx3::v1::registered_string_in::registered_string_in</a></div><div class="ttdeci">registered_string_in(wchar_t const *msg) noexcept</div><div class="ttdoc">Constructs a registered_string_in from the specified msg string.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01581">nvtx3.hpp:1581</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1registered__string__in_html_abf90f8765081cee5f99d971271e29567"><div class="ttname"><a href="classnvtx3_1_1v1_1_1registered__string__in.html#abf90f8765081cee5f99d971271e29567">nvtx3::v1::registered_string_in::get</a></div><div class="ttdeci">static registered_string_in const &amp; get() noexcept</div><div class="ttdoc">Returns a global instance of a registered_string_in as a function local static.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01489">nvtx3.hpp:1489</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1scoped__range__in_html"><div class="ttname"><a href="classnvtx3_1_1v1_1_1scoped__range__in.html">nvtx3::scoped_range_in</a></div><div class="ttdoc">A RAII object for creating a NVTX range local to a thread within a domain.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l02101">nvtx3.hpp:2101</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1scoped__range__in_html_a25eff24202b7021ced3481b29c1768c8"><div class="ttname"><a href="classnvtx3_1_1v1_1_1scoped__range__in.html#a25eff24202b7021ced3481b29c1768c8">nvtx3::v1::scoped_range_in::scoped_range_in</a></div><div class="ttdeci">scoped_range_in(event_attributes const &amp;attr) noexcept</div><div class="ttdoc">Construct a scoped_range_in with the specified event_attributes</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l02117">nvtx3.hpp:2117</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1scoped__range__in_html_a53b3c3d95b29dfc31db2df290804df65"><div class="ttname"><a href="classnvtx3_1_1v1_1_1scoped__range__in.html#a53b3c3d95b29dfc31db2df290804df65">nvtx3::v1::scoped_range_in::scoped_range_in</a></div><div class="ttdeci">scoped_range_in(Args const &amp;... args) noexcept</div><div class="ttdoc">Constructs a scoped_range_in from the constructor arguments of an event_attributes.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l02147">nvtx3.hpp:2147</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1scoped__range__in_html_a72417f5a5f0ecf2b67551880bdd28955"><div class="ttname"><a href="classnvtx3_1_1v1_1_1scoped__range__in.html#a72417f5a5f0ecf2b67551880bdd28955">nvtx3::v1::scoped_range_in::scoped_range_in</a></div><div class="ttdeci">scoped_range_in() noexcept</div><div class="ttdoc">Default constructor creates a scoped_range_in with no message, color, payload, nor category.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l02157">nvtx3.hpp:2157</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1scoped__range__in_html_aebf31fd1548c4bf5196332db9ee90fb1"><div class="ttname"><a href="classnvtx3_1_1v1_1_1scoped__range__in.html#aebf31fd1548c4bf5196332db9ee90fb1">nvtx3::v1::scoped_range_in::~scoped_range_in</a></div><div class="ttdeci">~scoped_range_in() noexcept</div><div class="ttdoc">Destroy the scoped_range_in, ending the NVTX range event.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l02175">nvtx3.hpp:2175</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1unique__range__in_html"><div class="ttname"><a href="classnvtx3_1_1v1_1_1unique__range__in.html">nvtx3::unique_range_in</a></div><div class="ttdoc">A RAII object for creating a NVTX range within a domain that can be created and destroyed on differen...</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l02540">nvtx3.hpp:2540</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1unique__range__in_html_a252eabd84e3eaf7ac788446048652c93"><div class="ttname"><a href="classnvtx3_1_1v1_1_1unique__range__in.html#a252eabd84e3eaf7ac788446048652c93">nvtx3::v1::unique_range_in::unique_range_in</a></div><div class="ttdeci">constexpr unique_range_in() noexcept</div><div class="ttdoc">Default constructor creates a unique_range_in with no message, color, payload, nor category.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l02590">nvtx3.hpp:2590</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1unique__range__in_html_a931bde31ac0aeb60e8f3050a29c60f83"><div class="ttname"><a href="classnvtx3_1_1v1_1_1unique__range__in.html#a931bde31ac0aeb60e8f3050a29c60f83">nvtx3::v1::unique_range_in::~unique_range_in</a></div><div class="ttdeci">~unique_range_in() noexcept=default</div><div class="ttdoc">Destroy the unique_range_in ending the range.</div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1unique__range__in_html_aaf57515e4b226d0b114ab5fc54f51ee3"><div class="ttname"><a href="classnvtx3_1_1v1_1_1unique__range__in.html#aaf57515e4b226d0b114ab5fc54f51ee3">nvtx3::v1::unique_range_in::unique_range_in</a></div><div class="ttdeci">unique_range_in(Args const &amp;... args) noexcept</div><div class="ttdoc">Constructs a unique_range_in from the constructor arguments of an event_attributes.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l02580">nvtx3.hpp:2580</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1unique__range__in_html_adcf350963f4c071aed55c6c7315847d1"><div class="ttname"><a href="classnvtx3_1_1v1_1_1unique__range__in.html#adcf350963f4c071aed55c6c7315847d1">nvtx3::v1::unique_range_in::unique_range_in</a></div><div class="ttdeci">unique_range_in(event_attributes const &amp;attr) noexcept</div><div class="ttdoc">Construct a new unique_range_in object with the specified event attributes.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l02555">nvtx3.hpp:2555</a></div></div>
<div class="ttc" id="anvtx3_8hpp_html_a0ef24a4252e5cc6267766410a03dcebb"><div class="ttname"><a href="nvtx3_8hpp.html#a0ef24a4252e5cc6267766410a03dcebb">nvtx3::v1::end_range_in</a></div><div class="ttdeci">void end_range_in(range_handle r) noexcept</div><div class="ttdoc">Manually end the range associated with the handle r in domain D.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l02487">nvtx3.hpp:2487</a></div></div>
<div class="ttc" id="anvtx3_8hpp_html_a19ff87d74e1ba3b674b6e0a542d7a228"><div class="ttname"><a href="nvtx3_8hpp.html#a19ff87d74e1ba3b674b6e0a542d7a228">nvtx3::v1::mark_in</a></div><div class="ttdeci">void mark_in(event_attributes const &amp;attr) noexcept</div><div class="ttdoc">Annotates an instantaneous point in time with a &quot;marker&quot;, using the attributes specified by attr.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l02663">nvtx3.hpp:2663</a></div></div>
<div class="ttc" id="anvtx3_8hpp_html_a58d393b13ffc2fe5f44b0171be0bec23"><div class="ttname"><a href="nvtx3_8hpp.html#a58d393b13ffc2fe5f44b0171be0bec23">nvtx3::v1::start_range_in</a></div><div class="ttdeci">range_handle start_range_in(event_attributes const &amp;attr) noexcept</div><div class="ttdoc">Manually begin an NVTX range.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l02346">nvtx3.hpp:2346</a></div></div>
<div class="ttc" id="anvtx3_8hpp_html_a944d0beb92c70e5d3842c5dc4fca81ec"><div class="ttname"><a href="nvtx3_8hpp.html#a944d0beb92c70e5d3842c5dc4fca81ec">nvtx3::v1::start_range</a></div><div class="ttdeci">range_handle start_range(event_attributes const &amp;attr) noexcept</div><div class="ttdoc">Manually begin an NVTX range in the global domain.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l02423">nvtx3.hpp:2423</a></div></div>
<div class="ttc" id="anvtx3_8hpp_html_aa2016d0df543887a838402751356433d"><div class="ttname"><a href="nvtx3_8hpp.html#aa2016d0df543887a838402751356433d">nvtx3::v1::operator==</a></div><div class="ttdeci">constexpr bool operator==(range_handle lhs, range_handle rhs) noexcept</div><div class="ttdoc">Compares two range_handles for equality.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l02303">nvtx3.hpp:2303</a></div></div>
<div class="ttc" id="anvtx3_8hpp_html_aa9b21b20125928a45a37c12bf1992651"><div class="ttname"><a href="nvtx3_8hpp.html#aa9b21b20125928a45a37c12bf1992651">nvtx3::v1::mark</a></div><div class="ttdeci">void mark(event_attributes const &amp;attr) noexcept</div><div class="ttdoc">Annotates an instantaneous point in time with a &quot;marker&quot;, using the attributes specified by attr,...</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l02729">nvtx3.hpp:2729</a></div></div>
<div class="ttc" id="anvtx3_8hpp_html_aaaae235fe6980a2ac95eb4f35d6e9ad1"><div class="ttname"><a href="nvtx3_8hpp.html#aaaae235fe6980a2ac95eb4f35d6e9ad1">nvtx3::v1::operator!=</a></div><div class="ttdeci">constexpr bool operator!=(range_handle lhs, range_handle rhs) noexcept</div><div class="ttdoc">Compares two range_handles for inequality.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l02314">nvtx3.hpp:2314</a></div></div>
<div class="ttc" id="anvtx3_8hpp_html_aec1adbeb9e44752027d2ede89f1f0dba"><div class="ttname"><a href="nvtx3_8hpp.html#aec1adbeb9e44752027d2ede89f1f0dba">nvtx3::v1::end_range</a></div><div class="ttdeci">void end_range(range_handle r) noexcept</div><div class="ttdoc">Manually end the range associated with the handle r in the global domain.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l02509">nvtx3.hpp:2509</a></div></div>
<div class="ttc" id="astructnvtx3_1_1v1_1_1argb_html"><div class="ttname"><a href="structnvtx3_1_1v1_1_1argb.html">nvtx3::argb</a></div><div class="ttdoc">Indicates the value of the alpha, red, green, and blue color channels for an ARGB color to use as an ...</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01025">nvtx3.hpp:1025</a></div></div>
<div class="ttc" id="astructnvtx3_1_1v1_1_1argb_html_afe825f33bf3e68178c1df87d86ec9d93"><div class="ttname"><a href="structnvtx3_1_1v1_1_1argb.html#afe825f33bf3e68178c1df87d86ec9d93">nvtx3::v1::argb::argb</a></div><div class="ttdeci">constexpr argb(component_type alpha_, component_type red_, component_type green_, component_type blue_) noexcept</div><div class="ttdoc">Construct an argb with alpha, red, green, and blue channels specified by alpha_, red_,...</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01038">nvtx3.hpp:1038</a></div></div>
<div class="ttc" id="astructnvtx3_1_1v1_1_1domain_1_1global_html"><div class="ttname"><a href="structnvtx3_1_1v1_1_1domain_1_1global.html">nvtx3::v1::domain::global</a></div><div class="ttdoc">Tag type for the &quot;global&quot; NVTX domain.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l00787">nvtx3.hpp:787</a></div></div>
<div class="ttc" id="astructnvtx3_1_1v1_1_1range__handle_html"><div class="ttname"><a href="structnvtx3_1_1v1_1_1range__handle.html">nvtx3::range_handle</a></div><div class="ttdoc">Handle used for correlating explicit range start and end events.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l02242">nvtx3.hpp:2242</a></div></div>
<div class="ttc" id="astructnvtx3_1_1v1_1_1range__handle_html_a268da1820c8b8c63210123f0eca23b4d"><div class="ttname"><a href="structnvtx3_1_1v1_1_1range__handle.html#a268da1820c8b8c63210123f0eca23b4d">nvtx3::v1::range_handle::range_handle</a></div><div class="ttdeci">constexpr range_handle(value_type id) noexcept</div><div class="ttdoc">Construct a range_handle from the given id.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l02251">nvtx3.hpp:2251</a></div></div>
<div class="ttc" id="astructnvtx3_1_1v1_1_1range__handle_html_a3919493cff16228eed36c9a3c3f84de6"><div class="ttname"><a href="structnvtx3_1_1v1_1_1range__handle.html#a3919493cff16228eed36c9a3c3f84de6">nvtx3::v1::range_handle::get_value</a></div><div class="ttdeci">constexpr value_type get_value() const noexcept</div><div class="ttdoc">Returns the range_handle's value.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l02288">nvtx3.hpp:2288</a></div></div>
<div class="ttc" id="astructnvtx3_1_1v1_1_1range__handle_html_a5d0f33132aa6782d681656040dd6ce7f"><div class="ttname"><a href="structnvtx3_1_1v1_1_1range__handle.html#a5d0f33132aa6782d681656040dd6ce7f">nvtx3::v1::range_handle::range_handle</a></div><div class="ttdeci">constexpr range_handle() noexcept=default</div><div class="ttdoc">Constructs a null range handle.</div></div>
<div class="ttc" id="astructnvtx3_1_1v1_1_1range__handle_html_a77be25af5cf21fde96c18bf30727f109"><div class="ttname"><a href="structnvtx3_1_1v1_1_1range__handle.html#a77be25af5cf21fde96c18bf30727f109">nvtx3::v1::range_handle::value_type</a></div><div class="ttdeci">nvtxRangeId_t value_type</div><div class="ttdoc">Type used for the handle's value.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l02244">nvtx3.hpp:2244</a></div></div>
<div class="ttc" id="astructnvtx3_1_1v1_1_1range__handle_html_acaef1aa87e8c7ce936b0e93040b8ad3a"><div class="ttname"><a href="structnvtx3_1_1v1_1_1range__handle.html#acaef1aa87e8c7ce936b0e93040b8ad3a">nvtx3::v1::range_handle::range_handle</a></div><div class="ttdeci">constexpr range_handle(std::nullptr_t) noexcept</div><div class="ttdoc">Implicit conversion from nullptr constructs a null handle.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l02281">nvtx3.hpp:2281</a></div></div>
<div class="ttc" id="astructnvtx3_1_1v1_1_1rgb_html"><div class="ttname"><a href="structnvtx3_1_1v1_1_1rgb.html">nvtx3::rgb</a></div><div class="ttdoc">Indicates the values of the red, green, and blue color channels for an RGB color to use as an event a...</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l00993">nvtx3.hpp:993</a></div></div>
<div class="ttc" id="astructnvtx3_1_1v1_1_1rgb_html_a558a299dbc7c98f3d9b7cdd4a5e013e4"><div class="ttname"><a href="structnvtx3_1_1v1_1_1rgb.html#a558a299dbc7c98f3d9b7cdd4a5e013e4">nvtx3::v1::rgb::rgb</a></div><div class="ttdeci">constexpr rgb(component_type red_, component_type green_, component_type blue_) noexcept</div><div class="ttdoc">Construct a rgb with red, green, and blue channels specified by red_, green_, and blue_,...</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01007">nvtx3.hpp:1007</a></div></div>
<div class="ttc" id="astructnvtx3_1_1v1_1_1rgb_html_afc2175c4660eb39a9d905528d02fe1b8"><div class="ttname"><a href="structnvtx3_1_1v1_1_1rgb.html#afc2175c4660eb39a9d905528d02fe1b8">nvtx3::v1::rgb::component_type</a></div><div class="ttdeci">uint8_t component_type</div><div class="ttdoc">Type used for component values.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l00995">nvtx3.hpp:995</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8
</small></address>
</body>
</html>
